Как удалить динамически созданную кнопку при нажатии на нее?
Удаление одной из кнопок созданных циклом FOR при нажатии на нее. Нужно что-то типа "this".
Вот в таком виде удаляется не та кнопка на которую нажали, а последняя созданная:
def btnDel():
btn.destroy()
j=0
for i in seat.values():
j+=1
btn=Button(frRoom,text='МЕСТО %s'% j,width=10,height=5,command=btnDel)
btn.place(x=i[0],y=i[1])
В идеале бы что-то типа такого, но в Python this нет я так понял
command=lambda:this.destroy()
Как отловить событие конкретно нажатой кнопки я тоже не понял
Ответы (1 шт):
Автор решения: Amgarak
→ Ссылка
Можно реализовать всё через замыкание:
import tkinter as tk
def newB(root, i):
def delB():
button.destroy()
button = tk.Button(root, text=f"Кнопка {i}", command=delB)
button.pack(pady=5)
root = tk.Tk()
for i in range(5):
newB(root, i)
root.mainloop()
Суть в целом тажа, но уже через lambda.
Правда сперва придётся создать саму кнопку, а уже потом к ней привязывать команду:
import tkinter as tk
def delB(b):
b.destroy()
root = tk.Tk()
for i in range(5):
button = tk.Button(root, text=f"Кнопка {i}")
button.config(command=lambda b=button: delB(b))
button.pack(pady=5)
root.mainloop()