Tkinter - 为什么我必须在窗口关闭前单击十字架两次

时间:2017-02-28 18:01:35

标签: tkinter toplevel tkmessagebox

当我创建subwindow (toplevel)时,我无法通过单击关闭主窗口。我必须点击十字架,然后按照我所谓的函​​数times(+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()

2 个答案:

答案 0 :(得分:1)

因为你曾两次打电话给mainloop()。移除对subwin.mainloop()的呼叫,您不需要它。正确的tkinter程序应该只调用mainloop()一次。

答案 1 :(得分:0)

您正在运行2个主循环事件。您应该删除about()方法中的那个。

def about():
    subwin = Toplevel(mainwin)
    #subwin.mainloop() <- Remove this