我有一个textview小部件,我可以应用标签,如粗体,下划线等。
self.tags = {}
self.tags['bold'] = self.textbuffer.create_tag("bold", weight=Pango.Weight.BOLD)
self.tags['italic'] = self.textbuffer.create_tag("italic", style=Pango.Style.ITALIC)
self.tags['underline'] = self.textbuffer.create_tag("underline", underline=Pango.Underline.SINGLE)
self.tags['ubuntu'] = self.textbuffer.create_tag("ubuntu", family = "Ubuntu Mono")
self.tags['size'] = self.textbuffer.create_tag("size", font_desc=Pango.FontDescription.from_string("32"))
问题在于最后一个问题,如果我应用字体大小标签,那么其余的都不起作用。
处理insert-text
信号的函数如下:
def insert_with_tags(self, buffer, start_iter, data, data_len):
if data_len == 1:
start_iter.backward_char()
end = self.textbuffer.props.cursor_position
end_iter = self.textbuffer.get_iter_at_offset(end)
self.textbuffer.apply_tag(self.tags['size'], start_iter, end_iter)
for tag in self.format_toolbar.buttons:
if self.format_toolbar.buttons[tag].get_active():
self.textbuffer.apply_tag(self.tags[tag], start_iter, end_iter)
如果我删除应用字体大小的行一切正常,但我想让用户能够修改字体(这里我只用1种字体测试它,但是当我为它添加标签时它是一样的键入时不要只修改整个缓冲区。