2014-01-24 51 views

回答

0

text小部件支持完全撤銷/重做功能。你只需要打開它;因爲不是所有使用text都需要這樣的事情,所以默認關閉。要打開它,您只需要將布爾型-undo小部件選項設置爲true。就這麼簡單(儘管你寫的方式可能與Tcl以外的語言稍有不同,例如Tkinter的undo)。

但是,PerlTk似乎弄得這一切混亂。出於某種原因,Tk::Text小部件不支持撤銷/重做(爲什麼?機器在那裏,戳穿),並且Tk::TextUndo小部件沒有暴露的重做功能(爲什麼地球上會被忽略?)這些都是PerlTk中的所有限制,而不是Tk本身。在這種情況下,你最好的選擇可能是Tk::Text::SuperText類,但對我來說這很奇怪,因爲它只是做我認爲是核心Tk功能的東西。

或者只是CPAN文檔已過時。

+0

你可以像Tkinter那樣注入Tcl命令嗎? –

0

問題是,「」結合被分配兩次,對於虛擬事件「<>」(實施emacs的狀粘貼)到虛擬事件「<>」。正常的Tk::Text不具有撤消功能,因此在這裏綁定C-y是有道理的。不幸的是,這種綁定在使用Tk::TextUndo時會發生衝突。

您有以下幾種可能:

  • 使用重做其他綁定(例如F12結合,把傳統知識::主窗口的源代碼的完整列表,或者「重做」,在彈出的菜單項)
  • 刪除全球範圍內<<Paste>>C-y綁定,例如使用: $mw->eventDelete('<<Paste>>', '<Control-Key-y>');

我不知道這可怎麼解決最好用Perl/Tk的源本身。最簡單的方法是在這裏刪除'<>'的emacs密鑰綁定,但是emacs用戶可能會不高興。我願意提供建議......