在 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::Entry 更改之前,我应该捕获啥信号来获取它的文本?