2008-12-09 102 views
1

我正在尝试编写能够在Python中自动关闭Toplevel Tk窗口的代码。摧毁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() 

回答

8

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

你应该把:

command=TL.destroy 

,或者如果您使用的λ:

command=lambda: TL.destroy() 
+0

我明白,拉姆达返回的功能,但是,这不是与传递TL.destroy?两者都是对功能的引用,对吗? – Hortitude 2008-12-09 05:13:18