在 GTK 3.0 中更改文本的颜色



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

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

您能否建议一些功能来执行此操作。

若要指定缓冲区中的某些文本应具有特定的格式,必须定义一个标记来保存该格式信息,然后使用该标记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() 删除给定区域中的所有标签。

从 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)

堆栈溢出答案与示例

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

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

最新更新