在 GTK 3.0 中更改文本的颜色

Posted

技术标签:

【中文标题】在 GTK 3.0 中更改文本的颜色【英文标题】:Change color of text in 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 并且已过时。 【参考方案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)

*** answer with example

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

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

【讨论】:

以上是关于在 GTK 3.0 中更改文本的颜色的主要内容,如果未能解决你的问题,请参考以下文章

Gtk+ 3.0 改变状态栏字体颜色

在 Gtk::Entry 更改之前,我应该捕获啥信号来获取它的文本?

在 Plotly 3.0 中设置图例文本颜色

如何在材质 ui 卡中悬停时更改文本颜色?我想更改卡片悬停时的文本颜色而不是悬停在文本上?

Gtk TextView - 将光标放置或移动到文本末尾?

为啥我无法更改 UIButton 文本颜色?