1

我有一个包含文本视图的进程窗口。Textview 有一个文本缓冲区。使用以下代码,我可以在此 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)
4

2 回答 2

1

您可能需要阅读Text Widget Overview。该页面的简短回答是:

有两种方法可以影响 GtkTextView 中的文本属性。您可以更改给定 GtkTextView 的默认属性,并且可以应用更改文本区域属性的标签

因此,如果您想更改所有文本的颜色,请在 TextView 上使用Widget.override_color ()(或用于旧版 GTK+和朋友)。Widget.modify_text ()如果您只想修改部分文本,请使用 TextBuffer 标记。概述显示了两者的示例。

于 2014-01-24T09:14:49.817 回答
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 命令。

于 2014-01-27T09:59:06.993 回答