python Tkinter очистить определенную метку выходного текста

#python #tkinter

#python #tkinter

Вопрос:

я написал некоторый код, который выводит вывод на экран, и он может делать это несколько раз проблема в том, что я, похоже, не могу получить текст, прежде чем очистить его, прежде чем писать над ним, так что это выглядит немного ужасно я пытался использовать

 tk.delete(0, END)
  

но это ничего не помогло, поэтому я не уверен, что делать, вот код, если вы хотите посмотреть :

 entry1 = tk.Entry(root) 
canvas1.create_window(200, 140, window=entry1)

def encrypt ():
    
    x1 = entry1.get()
        
    try :
        val = int(x1)
    except ValueError :
        label4 = tk.Label(root, text= encryption.encryption(x1) , font=('helvetica', 10, 'bold'))
        canvas1.create_window(200, 250, window=label4)
    else :
        label4 = tk.Label(root, text= encryption.decryption(int(x1)) , font=('helvetica', 10, 'bold'))
        canvas1.create_window(200, 250, window=label4)        
    
    label3 = tk.Label(root, text= 'The new encrypted message is : ',font=('helvetica', 10))
    canvas1.create_window(200, 210, window=label3)
    
button1 = tk.Button(text='Encrypt data', command=encrypt , bg='brown', fg='white', font=('helvetica', 9, 'bold'))
canvas1.create_window(200, 180, window=button1)
  

мне нужно, чтобы он записывал поверх выходной метки, которая, кстати, является label4.

Комментарии:

1. Создайте label4 снаружи encrypt() и обновите его текст внутри этой функции

Ответ №1:

У меток нет метода удаления, вы просто меняете текст.

 label4['text'] = ""
  

Или

 label4.config(text="")
  

Комментарии:

1. label4 — это Label виджет, которого нет delete() .

2. @acw1668 Ты прав! Это метка, а не запись.

Ответ №2:

Лучше создать label3 и label4 внешнюю encrypt() функцию:

 label3 = tk.Label(root, text='The new encrypted message is:', font=('helvetica', 10))
canvas1.create_window(200, 210, window=label3, state='hidden', tag='result') # initially hidden

label4 = tk.Label(root, font=('helvetica', 10, 'bold'))
canvas1.create_window(200, 250, window=label4, state='hidden', tag='result') # initially hidden
  

Затем обновите label4 и сделайте label3 label4 видимым внутри encrypt() :

 def encrypt():
    x1 = entry1.get()
    try:
        val = int(x1)
    except ValueError:
        label4.config(text=encryption.encryption(x1))
    else:
        label4.config(text=encryption.decryption(val))
    # make label3 and label4 visible
    canvas1.itemconfig('result', state='normal')