Gtk TextView动态样式

时间:2017-08-14 07:20:00

标签: python python-2.7 gtk gtk3

我有一个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种字体测试它,但是当我为它添加标签时它是一样的键入时不要只修改整个缓冲区。

0 个答案:

没有答案