需要示例/帮助GtkTextBuffer(GtkTextView)序列化/反序列化

时间:2009-12-11 03:02:02

标签: python gtk pygtk gtk2

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

我在此发现的最佳文档是: http://www.pygtk.org/docs/pygtk/class-gtktextbuffer.html#method-gtktextbuffer--register-serialize-format

但是,我不理解函数参数。 如何使用这些文件来保存/加载包含标签的textview,将会非常方便。

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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

来尝试默认的序列化程序
textbuffer.register_serialize_tagset()

这为您提供了GTK +的内置专有序列化器。在这里专有意味着它不会序列化为一些众所周知的格式;但如果您只需要能够保存文本缓冲区的内容并加载它们,那么这应该没问题。

当然,如果你真的想知道它是如何工作的,那么源代码可以在GTK +中找到;我建议不要试图实施,例如但是,这是一个独立的反序列化器,因为GTK +可能无法保证格式保持原样。