1

当我创建一个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()
4

2 回答 2

1

那是因为你打mainloop()了两次电话。删除对 的调用subwin.mainloop(),您不需要它。一个合适的 tkinter 程序应该只调用mainloop()一次。

于 2017-02-28T18:12:43.980 回答
0

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

def about():
    subwin = Toplevel(mainwin)
    #subwin.mainloop() <- Remove this
于 2017-02-28T18:13:06.840 回答