Удалить созданный 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()
→ Ссылка