Как создать кнопку, которая удаляет все метки в tkinter?

#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 вы можете принять этот ответ ?