Question

J'essayais d'écrire du code qui fermerait automatiquement une fenêtre Toplevel Tk en Python.

J'ai fini par le faire fonctionner, mais j'ai rencontré un petit problème que je ne pouvais pas résoudre.

Les deux autres boutons fonctionnent, mais le premier ne fonctionne pas et je ne comprends pas pourquoi ...

Des idées?

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()
Était-ce utile?

La solution

Parce qu'il renvoie une fonction et non son résultat.

Vous devriez mettre:

command=TL.destroy

ou si vous avez utilisé lambda:

command=lambda: TL.destroy()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top