Удалить созданный label tkinter
Я хочу создавать таблицу на основе пришедших данных. Для этого я создал функцию add_label, но как мне потом удалить их?
import tkinter as tk
def add_label():
label = tk.Label(app, text='NewLabel').grid()
def destroy_label():
label.destroy()
app = tk.Tk()
app.geometry("400x400+10+10")
btn4 = tk.Button(app, text="ADD LABEL", command=add_label).grid(row=5, column=0)
btn5 = tk.Button(app, text="Destroy Labels", command=destroy_label).grid(row=6, column=0)
app.mainloop()
Ответы (1 шт):
Автор решения: GrAnd
→ Ссылка
В принципе у вас почти всё верно. Только упущен один нюанс - переменную label надо было объявить глобальной, чтобы иметь возможность передавать её между функциями. Ну и если их у вас много, то это должен быть, к примеру, список.
labels_list = []
def add_label():
global labels_list
label = tk.Label(app, text='NewLabel')
label.grid()
labels_list.append(label)
def destroy_label():
if labels_list: # удалить последнюю
labels_list.pop().destroy()
# for label in labels_list: # удалить все
# label.destroy()
# labels_list = []
По два Label в ряд за раз:
labels_list = []
def add_label():
global labels_list
row = 7 + len(labels_list)//2
label = tk.Label(app, text='NewLabel')
label.grid(row=row, column=0)
labels_list.append(label)
label = tk.Label(app, text='NewLabel')
label.grid(row=row, column=1)
labels_list.append(label)
def destroy_label():
if labels_list: # удалить последние две
labels_list.pop().destroy()
labels_list.pop().destroy()