GTK TextView 中的撤销功能

10 投票
4 回答
3682 浏览
提问于 2025-04-11 09:18

我正在为一个我参与的程序尽量减少依赖,这个程序是一个小型文本编辑器。

GTK的文本视图组件似乎没有内置的撤销功能。我是不是错过了什么参考实现?大家都是自己为他们的文本视图组件写撤销功能吗?

如果能提供一些示例代码我会很高兴,特别是Python的示例代码,因为我们的项目是用Python写的。

4 个回答

4

根据你对依赖的敏感程度以及你正在开发的文本编辑器类型,GtkSourceView 可以为你提供撤销和重做的功能,还有很多其他的功能。如果你想要了解它提供的其他特性,值得一看。

5

作为后续,我把gtksourceview的撤销机制移植到了Python上:
Florian Heinle的textbuffer_with_undo

这个可以直接替代gtksourceview的撤销功能

(这里是原作者,不过launchpad的开放ID现在不能用了)

2024年编辑说明:
死链接已经更新到GitHub,包含了原作者(Florian Heinle)的提交记录。
其他贡献者的分支和更新的库是:
pygtk_textbuffer_with_undo GitHub库

4

据我所知,GTK的文本视图(TextView)并没有自带撤销功能。所以虽然我对Python的GTK库不太熟悉,但我觉得它也没有这个功能。

Ruby-GNOME2项目有一个示例文本编辑器,这个编辑器是有撤销和重做功能的。基本上,他们是通过连接TextView小部件的插入文本和删除范围的信号,来记录这些操作和相关的数据到一个列表里。

撰写回答