我知道我可以使用 TextUndo 小部件实现多次撤消。但这并没有做重做功能。
如何实现多重撤消和多重重做?
答案 0 :(得分:0)
text
小部件支持完整的撤消/重做功能。你只需要打开它;因为并非text
的所有用途都需要这种东西,所以它默认是关闭的。要打开它,您只需要将布尔-undo
窗口小部件选项设置为true。就这么简单(尽管你写的方式可能与Tcl以外的语言略有不同,例如,在Tkinter中它是undo
。
然而,PerlTk似乎搞得一团糟。由于某种原因,Tk::Text
小部件不支持撤销/重做(为什么?机器在那里,戳穿。)和Tk::TextUndo
窗口小部件没有暴露重做功能(为什么在地球上会被省略?)这些都是PerlTk的限制,而不是Tk本身。在这种情况下,你最好的选择可能是Tk::Text::SuperText
类,虽然对我来说这很奇怪,因为它只是在做我认为的核心Tk功能。
或许这只是过时的CPAN文档。
答案 1 :(得分:0)
问题是''绑定被分配两次,对于虚拟事件'<>' (以实现类似emacs的粘贴)和到虚拟事件'<>'。普通Tk::Text
没有撤消功能,因此在此处使用C-y
绑定是有道理的。不幸的是,当使用Tk::TextUndo
时,此绑定会发生冲突。
您有以下可能性:
C-y
<<Paste>>
绑定,例如通过使用:
$mw->eventDelete('<<Paste>>', '<Control-Key-y>');
我不确定如何在Perl / Tk源本身中最好地解决这个问题。最简单的方法是删除'&lt;&gt;'的emacs键绑定在这里,但emacs用户可能会不高兴。我愿意接受建议......