将文本写入 tkinter 文本小部件重做

Write text to tkinter text widget redo

我有一个 tkinter 文本小部件,我使用这些代码添加了 undo/redo 功能:

self.text = tk.Text(self, maxundo=-1, autoseparators=1, undo=True)

然后我在其中插入了一些字符串:

self.text.insert('insert', 'Text')

我按下了Command+ZCommand+Shift+Z,
我发现我只能撤消或重做通过键盘按键插入的文本,不能 text.inserted 文本。
所以,我想知道如何让文本小部件撤消使用 insert 方法插入的文本。
感谢您的帮助!

您应该在插入字符串前后添加一个编辑分隔符。

self.text.edit_separator()
self.text.insert('insert', 'Text')
self.text.edit_separator()

编辑分隔符让 tkinter 知道文本的逻辑块是什么。添加分隔符告诉 tkinter,就撤消而言,您的插入命令应被视为一个单元。