1

我正在 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()

现在:

  1. 运行程序。

  2. 将文本插入文本Hello, World!框中。

  3. lo, Wo使用鼠标选择文本。

  4. ctrl-b。所选文本变为粗体。

  5. ctrl-z。部分或全部文本消失。

  6. ctrl-y。文本再次出现。

现在,我希望使用其他文字处理程序,文本在重新出现时仍会被标记。然而,事实并非如此。

谢谢。

4

0 回答 0