0

我试图通过拦截窗口管理器 WM_DELETE_WINDOW 事件来防止在 OSX 中关闭顶层窗口。

#!/usr/bin/env python

from Tkinter import *

def speak():
    print "woof"

root = Tk()
root.title("root")
win = Toplevel()
win.title("win")
win.protocol('WM_DELETE_WINDOW', speak)
root.mainloop()

当我运行它时,我得到两个名为“root”和“win”的弹出窗口。如果我单击“win”上的红色“x”关闭按钮关闭窗口,打印“woof”然后关闭。但是,如果我在 Windows 上运行相同的代码,每次单击红色的“x”关闭按钮时,“win”都会保持打开状态并继续打印“woof”。

当我单击红色的“x”关闭按钮时,如何防止 Toplevel 窗口在 OSX 上关闭?

4

1 回答 1

2

请参阅对Python 问题 12584的回复。这似乎是 Apple 随 OS X 10.6 一起发布的 Cocoa Tcl/Tk 8.5 中的一个错误。如果您正在使用 Tkinter 或任何使用 Tkinter 的工具,例如 IDLE,请不要使用它或 Apple 提供的 10.6 中的 Python。更多信息在这里

于 2011-07-18T22:16:10.980 回答