2

我正在尝试将用户的粗体/斜体/字体/等标签保存在 GtkTextView 中。使用 GtkTextBuffer.get_text() 不会返回标签。

我找到的最好的文档是:http: //www.pygtk.org/docs/pygtk/class-gtktextbuffer.html#method-gtktextbuffer--register-serialize-format

但是,我不明白函数参数。如果有一个例子来说明如何使用这些来保存/加载带有标签的文本视图,那将非常方便。

编辑:我想澄清我想要完成的事情。基本上我想保存/加载文本视图的文本+标签。我不想做任何比这更复杂的事情。我使用pickle作为文件格式,所以我不需要任何关于如何保存或以什么格式保存它的帮助。只需要一种拉/推数据的方法,这样用户就不会丢失他/她在屏幕上看到的任何东西。谢谢你。

4

2 回答 2

3

如果您因为只想将文本复制到另一个文本缓冲区而需要保存标签,则可以使用gtk.TextBuffer.insert_range().

如果您需要将带有标签的文本保存为其他程序可读的另一种格式,我曾经编写了一个带有 GTK 文本缓冲区序列化器的库,用于往返 RTF。虽然它没有任何 Python 绑定。但无论如何,代码都是如何使用序列化器工具的一个很好的例子。链接:Osxcart

于 2009-12-14T11:06:52.143 回答
1

我没有使用 GtkTextBuffer 的序列化。阅读您链接的文档,我建议通过调用尝试默认序列化程序

textbuffer.register_serialize_tagset()

这为您提供了 GTK+ 的内置专有序列化程序。这里的专有意味着它不会序列化为某种众所周知的格式;但如果您只需要保存文本缓冲区的内容并将其加载回来,这应该没问题。

当然,如果你真的想弄清楚它是如何工作的,源代码在 GTK+ 中是可用的;我建议不要尝试实现例如独立的反序列化器,因为 GTK+ 可能无法保证格式将保持原样。

于 2009-12-14T07:34:31.820 回答