Glade GTK TextBuffer更改或设置颜色

时间:2014-01-24 08:42:33

标签: python colors gtk gtk-textbuffer

我有一个包含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)

2 个答案:

答案 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命令。