【问题标题】:Change color of text in GTK 3.0在 GTK 3.0 中更改文本的颜色
【发布时间】:2018-04-13 11:06:07
【问题描述】:

我在Gtk.TextView() 中使用Gtk.TextBuffer() 在屏幕上写一些文字。我希望在经常写作时改变文本的颜色。例如。

In Green -- Printing Green color
In Red   -- Printing Red color
In Green -- Printing Green color
In Red   -- Printing Red color

您能否建议一些功能来做到这一点。

【问题讨论】:

  • 没有 PyGtk3 这样的东西。 pygtk 是 gtk2 并且已过时。

标签: python gtk gtk3


【解决方案1】:

要指定缓冲区中的某些文本应具有特定格式,您必须定义一个标记来保存该格式信息,然后使用create_tag("tag name", property)apply_tag(tag, start_iter, end_iter) 将该标记应用于文本区域,例如:

tag = textbuffer.create_tag("orange_bg", background="orange")
textbuffer.apply_tag(tag, start_iter, end_iter)

以下是应用于文本的一些常见样式:

  • 背景颜色(“背景”属性)
  • 前景色(“前景”属性)
  • 下划线(“下划线”属性)
  • 粗体(“重量”属性)
  • 斜体(“样式”属性)
  • 删除线(“删除线”属性)
  • 理由(“理由”属性)
  • 大小(“大小”和“大小点”属性)
  • 文本换行(“换行模式”属性)

您也可以稍后使用remove_tag() 删除特定标签,或通过调用remove_all_tags() 删除给定区域中的所有标签。

【讨论】:

    【解决方案2】:

    自 GTK3.16 起,您可以使用 pango 标记。

    self.textbuffer.insert_markup(iter, markup);
    

    .

    self.textbuffer.insert_markup(self.textbuffer.get_end_iter(), "<b>and some bold text</b>", -1)
    

    StackOverflow answer with example

    GTK3+ 文档: https://developer.gnome.org/gtk3/stable/GtkTextBuffer.html#gtk-text-buffer-insert-markup

    在标记中的位置 iter 插入文本。将插入标记 完整且必须以 nul 结尾且有效的 UTF-8。发出 “插入文本”信号,可能多次;实际上插入 发生在信号的默认处理程序中。 iter 将指向 返回时插入文本的结尾。

    【讨论】:

      猜你喜欢
      • 2016-09-20
      • 1970-01-01
      • 1970-01-01
      • 2014-12-17
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      • 2011-06-23
      • 2012-03-26
      相关资源
      最近更新 更多