Как удалить лейбл из команды в другой команде
Мне надо чтобы по нажатию кнопки Delete_label Label удалялся.
Код:
from tkinter import *
def add_label():
a=Label(win,text='Label')
a.pack()
def del_label():
pass
win=Tk()
win.geometry('1080x2400')
win.title('Помогите')
win.resizable(width=0, height=0)
Button(win,text='Add_label',command=add_label).pack()
Button(win,text='Delete_label',command=del_label).pack()
win.mainloop()
Ответы (2 шт):
Автор решения: Алексей Р
→ Ссылка
Вариант 1 - сохраните метки в список, потом удаляйте
Вариант 2 - переберите все элементы через pack_slaves() и удалите метки
См. примечания в коде.
from tkinter import *
labels = []
def add_label():
a = Label(win, text='Label')
labels.append(a)
a.pack()
def del_label(): # Вариант 1 - удаляет метки по очереди из списка
if labels:
labels.pop(0).destroy()
def delete_all_labels(): # Вариант 2 - удаляет все метки без списка
for child in win.pack_slaves():
if isinstance(child, tkinter.Label):
child.destroy()
win = Tk()
win.geometry('1080x2400')
win.title('Помогите')
win.resizable(width=0, height=0)
Button(win, text='Add_label', command=add_label).pack()
Button(win, text='Delete_label', command=del_label).pack()
Button(win, text='Delete ALL Labels', command=delete_all_labels).pack() # доп. кнопка для удаления всех меток без списка
win.mainloop()
Автор решения: KirNsk
→ Ссылка
Можно это сделать через label.configure():
def delete():
global a
a.configure(text="")
и вторую кнопку заменить на это:
Button(win,text='Delete_label',command=delete).pack()