2014-01-24 3 views
1

У меня есть окно процесса, которое включает в себя текстовое изображение. Textview имеет текстовый буфер. С помощью следующего кода я могу напечатать некоторый текст в этом текстовом буфере -> textview - processwindow.Glade GTK TextBuffer измените или установите цвет

Я хочу изменить цвет 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

Я нашел решение самостоятельно. Для моего решения вам нужно «импортировать 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.

1

Возможно, вы захотите прочитать Text Widget Overview. Короткий ответ с этой страницы:

Есть два способа повлиять на атрибуты текста в GtkTextView. Вы можете изменить атрибуты по умолчанию для данного GtkTextView, и вы можете применить тег, которые изменяют атрибуты для области текста

Так что, если вы хотите изменить цвет всего текста, используйте Widget.override_color() (или для устаревшего GTK + Widget.modify_text() и друзей) в TextView. Если вы хотите изменить часть текста, используйте теги TextBuffer. Обзор показывает примеры обоих.

+0

Я использую Glade, и это не так просто. Теперь у меня есть этот код: – user3231222

+0

Я не могу добавить код, потому что мне нужно подождать 8 часов. – user3231222

+0

Я пытался использовать теги, но он не работает. Мне нужна помощь. – user3231222

Смежные вопросы