0

ウィジェットTopLevelを含むウィンドウを 使用して、Tkinter でテキスト エディターを作成しています。現在、ドキュメント/バッファに保存されていない変更が含まれている場合、 *nix 環境での慣習として、 ->Textのようにウィンドウのタイトルの先頭にアスタリスクを追加します。そのために、次の方法を使用しています。MyDocument*MyDocumentedit_modifiedText

import Tkinter as tk
class EditingWindow(tk.Toplevel):
    # [...]

    self.text = tk.Text(...)

    # track modifications of the text:
    self.text.bind("<<Modified>>", self.modified)

    def modified(self, event=None):
        if self.text.edit_modified():
            title=self.title()
            if title[0] != '*':
                self.title("*" + title)
        else:
            title=self.title()
            if title[0] == '*':
                self.title(title[1:])

    def save(self, event=None):
        # [... saving under a filename kept in the variable self.filename ...]
        self.text.edit_modified(False)
        self.title(os.path.basename(self.filename))

私の質問は次のとおりです。Mac OS X では、ウィンドウ タイトルの先頭にアスタリスクを付けるのではなく、ウィンドウの閉じるボタン (左上隅にある赤い円形のボタン) に黒い点が表示され、変更が保存されていないことを示します。Tkinter (または、より一般的には Tcl/Tk) からこの機能にアクセスできますか?

編集 2: AppleScript を使用する最初の提案の後、Kevin Walzer が解決策を思い付きました: 設定tkinterwm_attributes. 上記では、それは使用することになります

self.wm_attributes("-modified", 1) # sets black dot in toplevel's close button (mac)

self.wm_attributes("-modified", 0) # unsets black dot in toplevel's close button (mac)

self.modified

4

1 に答える 1