ウィンドウマネージャーの 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」というタイトルの 2 つのポップアップ ウィンドウが表示されます。「win」の赤い「x」閉じるボタンをクリックしてウィンドウを閉じると、「woof」と出力されてから閉じます。ただし、この同じコードを Windows で実行すると、「win」が開いたままになり、赤い「x」閉じるボタンをクリックするたびに「woof」と表示され続けます。
赤い「x」閉じるボタンをクリックしたときに OSX でトップレベル ウィンドウが閉じないようにするにはどうすればよいですか?