在Python中销毁一个顶层tk窗口

1 投票
1 回答
10234 浏览
提问于 2025-04-11 20:51

我在写一段代码,想让Python里的Toplevel Tk窗口自动关闭。

最后我成功让它工作了,但在这个过程中遇到了一点小问题,我没能搞明白。

后面两个按钮可以正常使用,但第一个按钮却不行,我也不知道为什么……

有没有什么想法?

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()

1 个回答

8

因为它返回的是一个函数,而不是函数的结果。

你应该写:

command=TL.destroy

或者如果你用的是lambda表达式:

command=lambda: TL.destroy()

撰写回答