退出操作未从按钮执行

问题描述 投票:0回答:1

我有一个创建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没有执行?

python tkinter
1个回答
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。

© www.soinside.com 2019 - 2024. All rights reserved.