Tkinter-为什么我必须在窗口关闭前单击十字2次
当我创建Tkinter-为什么我必须在窗口关闭前单击十字2次,tkinter,toplevel,tkmessagebox,Tkinter,Toplevel,Tkmessagebox,当我创建子窗口(顶级)时,我不能一次单击就关闭主窗口。我必须单击交叉键并确定我调用函数的次数(+1): import tkMessageBox from Tkinter import * def cross(): if tkMessageBox.askokcancel(u"Quit ATTA Convertor ?", "Are you sure you want to close the window ?"): mainwin.quit() def about()
子窗口(顶级)
时,我不能一次单击就关闭主窗口。我必须单击交叉键并确定我调用函数的次数(+1):
import tkMessageBox
from Tkinter import *
def cross():
if tkMessageBox.askokcancel(u"Quit ATTA Convertor ?", "Are you sure you want to close the window ?"):
mainwin.quit()
def about():
subwin = Toplevel(mainwin)
subwin.mainloop()
mainwin = Tk()
mainwin.protocol("WM_DELETE_WINDOW", cross)
mainMenu = Menu(mainwin)
mainMenu.add_command(label="about...", command=about)
mainwin.config(menu=mainMenu)
mainwin.mainloop()
这是因为您调用了
mainloop()
两次。删除对subwin.mainloop()的调用,您不需要它。正确的tkinter程序应该只调用一次mainloop()
。您正在运行两个mainloop事件。您应该删除about()
方法中的一个
def about():
subwin = Toplevel(mainwin)
#subwin.mainloop() <- Remove this
def about():
subwin=顶级(mainwin)
#subwin.mainloop()