退出操作未从按钮

时间:2017-12-25 19:54:06

标签: python tkinter

我有一个创建GUI表单的程序:

win=Tk()
win.resizeable(width=True, height=True)

我有一个退出按钮,最初定义为:

quitButton=tk.Button(win,text="Quit", fg="red",underline=0, 
                     command=win.destroy) 

当以这种方式定义时,退出按钮工作得很好,关闭应用程序并完全关闭窗口。

我想将它包装在一个对话框中,以防止意外检查退出按钮。因此,我创建了一个QuitAction函数来弹出一个对话框并验证用户是否打算按下按钮。

def QuitAction():
    qtitle = 'You pressed the quit button'
    qmessage = 'Any unsaved changes will be lost!\nDo you want to quit?'
    q = messagebox.askyesno(qtitle, qmessage)
    if q:
        win.destroy

当我用command=win.destroy替换command=QuitAction时,函数执行(我得到对话框),dialog box但是当我单击YES按钮(应该执行win.destroy时),没有任何反应。

如果我将win.destroy替换为任何其他代码(例如print('You pressed yes')),它就可以了。如果我对win做出另一个指示(例如(print(win.minsize())),它就可以正常工作。

所以我似乎可以在win函数中引用QuitAction

为什么win.destroy没有执行?

1 个答案:

答案 0 :(得分:0)

我明白了......

当我改变时

def QuitAction():
   qtitle = 'You pressed the quit button'
   qmessage = 'Any unsaved changes will be lost!\nDo you want to quit?'
   q = messagebox.askyesno(qtitle, qmessage)
   if q:
       win.destroy

def QuitAction():
   qtitle = 'You pressed the quit button'
   qmessage = 'Any unsaved changes will be lost!\nDo you want to quit?'
   q = messagebox.askyesno(qtitle, qmessage)
   if q:
       win.destroy()

一切正常 - 仍然习惯了Python。