Как удалить динамически созданную кнопку при нажатии на нее?

Удаление одной из кнопок созданных циклом 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()
→ Ссылка