Вопрос

Я пытался написать код, который автоматически закрывал бы окно Toplevel Tk в Python.

В итоге я заставил его работать, но по пути столкнулся с небольшой проблемой, которую не смог понять.

Вторые две кнопки работают, а первая нет и я не понимаю почему...

Есть идеи?

from Tkinter import *

root = Tk()
def doDestroy ():
    TL.destroy()

TL = Toplevel()
TL.b = Button (TL, text="lambda destroy", command=lambda: TL.destroy)
TL.b.pack()

TL.b2 = Button (TL, text="callback destroy", command=doDestroy)
TL.b2.pack()

de = lambda: TL.destroy()
TL.b3 = Button (TL, text="lambda that works", command=de)
TL.b3.pack()
root.mainloop()
Это было полезно?

Решение

Потому что он возвращает функцию, а не ее результат.

Вам следует поставить:

command=TL.destroy

или если вы использовали лямбду:

command=lambda: TL.destroy()
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top