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