我正在使用包含TopLevel
小部件的Text
窗口在Tkinter中编写文本编辑器。目前,当文档/缓冲区包含未保存的更改时,我会在窗口标题前加上星号,如MyDocument
- >中所示。 *MyDocument
,在* nix环境下的惯例。为此,我使用edit_modified
Text
方法,如下所示:
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上,不是在窗口标题前面加上星号,而是在窗口关闭按钮(topleft corner上的红色圆形按钮)上出现一个黑点表示未保存的更改。是否可以从Tkinter(或更一般地说,从Tcl / Tk)访问此功能?
编辑2:
在使用applescript的初步建议后,Kevin Walzer提出了解决方案:设置tkinter
的{{1}}。以上,相当于使用
wm_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)
中的。
答案 0 :(得分:2)
是的,这可以使用wm_attributes并将“modified”标志设置为true来完成。
示例:
from Tkinter import *
root= Tk();
Label(root,text='This is the Toplevel').pack(pady=10)
root.wm_attributes("-modified", 1)
root.mainloop()