我在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 将指向 返回时插入文本的结尾。