Pregunta

Estaba tratando de escribir código que cerrara automáticamente una ventana Toplevel Tk en Python.

Terminé haciendo que funcionara, pero me encontré con un pequeño problema en el camino que no pude resolver.

Los dos segundos botones funcionan, pero el primero no funciona y no entiendo por qué ...

¿Alguna idea?

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()
¿Fue útil?

Solución

Porque devuelve una función y no su resultado.

Deberías poner:

command=TL.destroy

o si usaste lambda:

command=lambda: TL.destroy()
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top