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

赤い「x」閉じるボタンをクリックしたときに OSX でトップレベル ウィンドウが閉じないようにするにはどうすればよいですか?

4

1 に答える 1

2

Python Issue 12584への返信を参照してください。これは、Apple が OS X 10.6 とともに出荷した非常にバグのある Cocoa Tcl/Tk 8.5 のバグのようです。Tkinter または IDLE などの Tkinter を使用するものを使用している場合は、10.6 で Apple が提供する Python を使用しないでください。詳細はこちら

于 2011-07-18T22:16:10.980 に答える