#python #tkinter #widget
Вопрос:
В настоящее время мой код создает метку с текстом «Привет» каждый раз, когда я нажимаю кнопку с надписью «Поздоровайся».
Я пытаюсь понять, как создать кнопку, которая удаляет все надписи с экрана, однако я совершенно ничего не понимаю.
Как создать кнопку, которая удаляет все надписи с экрана?
Мой код внизу.
import tkinter as tk
import time
root = tk.Tk()
root.geometry("700x500")
h = "Hello"
def CreateLabel():
helloLabel = tk.Label(root, text=h)
helloLabel.pack()
labelButton = tk.Button(root, text="Say hello", command=CreateLabel)
labelButton.pack()
root.mainloop()
Комментарии:
1. Знаете ли вы, что вам не нужно удалять и воссоздавать виджеты? Вы можете изменить текст в существующем виджете, что будет немного эффективнее, чем удаление и повторное создание.
Ответ №1:
Я новичок, но попробуйте это:
import tkinter as tk
import time
root = tk.Tk()
root.geometry("700x500")
h = "Hello"
liste = []
def CreateLabel():
helloLabel = tk.Label(root, text=h)
helloLabel.pack()
liste.append(helloLabel)
def DelLabel():
for i in range(len(liste)):
liste[i].destroy()
liste.clear()
labelButton = tk.Button(root, text="Say hello", command=CreateLabel)
labelButton.pack()
labelButton = tk.Button(root, text="del hello", command=DelLabel)
labelButton.pack()
root.mainloop()
Комментарии:
1. Лучше позвонить
liste.clear()
после цикла for внутриDelLabel()
, чтобы при следующемDelLabel()
вызове уже уничтоженные метки не были уничтожены снова.2. @farlesharris вы можете принять этот ответ ?