我有一个包含textview的进程窗口。 Textview有一个textbuffer。使用以下代码,我可以在此textbuffer中打印一些文本 - > textview - processwindow。
我想更改TextBuffer的颜色。我怎么能这样做?
import pygtk
import gtk
import gtk.glade
def __init__(self):
self.gladefile = "XXXXX.glade"
self.builder = gtk.Builder()
self.builder.add_from_file(self.gladefile)
self.builder.connect_signals(self)
self.window = self.builder.get_object("window1")
self.textbuffer = self.builder.get_object("textbuffer1")
def Print(self, text):
self.textfeld = self.textfeld + '\n' + text
self.textbuffer.set_text(self.textfeld)
答案 0 :(得分:1)
您可能需要阅读Text Widget Overview。该页面的简短回答如下:
有两种方法可以影响GtkTextView中的文本属性。您可以 更改给定GtkTextView的默认属性,您可以 应用更改文本区域属性的标签
因此,如果您想要更改所有文本的颜色,请在TextView上使用Widget.override_color ()
(或对于旧版GTK + Widget.modify_text ()
和朋友)。如果您只想修改部分文本,请使用TextBuffer标记。概述显示了两者的示例。
答案 1 :(得分:0)
我自己找到了解决方案。对于我的解决方案,您需要“导入Pango”。
import pygtk
import gtk
import gtk.glade
import Pango
def __init__(self):
self.gladefile = "XXXXX.glade"
self.builder = gtk.Builder()
self.builder.add_from_file(self.gladefile)
self.builder.connect_signals(self)
self.window = self.builder.get_object("window1")
self.textbuffer = self.builder.get_object("textbuffer1")
self.e_tag = self.textbuffer.create_tag("err", foreground="#FF0000")
def Print(self, text):
self.textfeld = text + '\n'
position = self.textbuffer.get_end_iter()
self.textbuffer.insert_with_tags(position, self.textfeld, self.e_tag)
注意: .set_text()与.inser_with_tags不一样,因此我更改了self.textfeld命令。