在GTK 3.0中更改文本的颜色

时间:2018-04-13 11:06:07

标签: python gtk gtk3

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

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

你能否建议一些功能来做这件事。

2 个答案:

答案 0 :(得分:0)

要指定缓冲区中的某些文字应具有特定格式,您必须定义标记以保存该格式信息,然后使用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()删除指定地区内的所有代码。

答案 1 :(得分:0)

从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。标记将被插入   完整,并且必须为零终止且有效的UTF-8。发出   “插入文本”信号,可能多次;实际插入   发生在信号的默认处理程序中。 iter将指向   返回时插入文本的结尾。