我有一个gtk.TextView
,我想在其中添加类似标记的文本。我知道这可以通过使用gtk.TextTag
来实现,您可以使用类似于pango标记字符串的属性来创建它。我注意到,没有一种简单的方法可以简单地将setumarkup设置为gtk.TextBuffer
,就像您可以使用多个其他小部件一样。相反,您必须创建一个TextTag,赋予它属性,然后将它插入到TextBuffer的TagTable中,指定标记应用于的iter。在
理想情况下,我希望创建一个函数,可以将pango标记字符串转换为TextTag以获得相同的效果。但gtk似乎没有内置的功能。
我注意到,您可以在一个已标记的字符串上使用pango.parse_markup()
,它将创建一个pango.AttributeList
,其中包含有关字符串上设置的属性及其出现的索引的信息。但是每种类型的属性都有细微的差别,这使得很难对每种情况进行概括。有更好的办法吗?或者pango标记不是要转换成gtk.TextTag
的?在
没有跟踪GTK+的开发,可能他们最近添加了一些东西,但是看到了这些错误:#59390和{a2}。因为他们没有关闭,很可能什么也没做。在
我终于想出了自己解决这个问题的办法。我创建了一个解析标记字符串的函数(使用
pango.parse_markup
)。通过阅读文档和python自省,我能够找到如何使用pango.Attribute
并将其转换为GtkTextTag
可以使用的属性。在函数如下:
此函数创建一个
MarkupProps()
对象,该对象能够生成GtkTextTag
以及文本中要应用它们的索引。在目标是:
^{pr2}$因此,通过这个函数和
MarkupProps
对象,我能够在给定一个pango标记字符串的情况下,将该字符串分解为它的属性和文本形式,然后将其转换为GtkTextTag
s相关问题 更多 >
编程相关推荐