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 のテキスト属性に影響を与える方法は 2 つあります。特定の 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 に答える