我正在 Python 3.7.4 / Tkinter 8.6 / Windows 10.0.18362.356 中编写一个 html 编辑器,并且正在使用标签来设置文本的样式<em>
,<strong>
等等。但是,内置的撤消/重做机制会删除这些标签,例如,如果我立即重做撤消后。在我发疯试图实现我自己的撤消/重做机制之前,有什么我遗漏的吗?
import tkinter
import tkinter.font
def bold(event=None):
try:
textbox.tag_add('bold', 'sel.first', 'sel.last')
except tkinter.TclError:
textbox.tag_add('bold', 1.0, 'end')
textbox = tkinter.Text(undo=True)
boldness = tkinter.font.Font(weight='bold')
textbox.tag_config('bold', font=boldness)
textbox.bind('<Control-b>', bold)
textbox.grid()
textbox.mainloop()
现在:
运行程序。
将文本插入文本
Hello, World!
框中。lo, Wo
使用鼠标选择文本。按
ctrl-b
。所选文本变为粗体。按
ctrl-z
。部分或全部文本消失。按
ctrl-y
。文本再次出现。
现在,我希望使用其他文字处理程序,文本在重新出现时仍会被标记。然而,事实并非如此。
谢谢。