Задать цвет переднего плана cellrenderertext при выделении строки - PullRequest
3 голосов
/ 02 сентября 2010

Когда у меня есть gtk.CellRendererText, я могу связать его цвет foreground с одним из столбцов хранилища дерева и установить атрибут foreground-set в значение True, чтобы изменить цвет текста в этом столбце. Однако когда строка с цветным столбцом выбрана, ее цвет исчезает и становится таким же, как цвет любой выбранной ячейки. Как изменить цвет, когда он выбран?

1 Ответ

5 голосов
/ 12 октября 2010

У меня возникла та же проблема, и, попробовав различные альтернативы, использование свойства markup вместо свойства text решило проблему.Ниже приведен пример, который работает в Ubuntu Maverick:

#!/usr/bin/python                               
import gtk


class Application(object):
    def __init__(self):
        window = gtk.Window()

        model = gtk.TreeStore(str)
        model.append(None, row=('Normal row',))
        model.append(None, row=('<span foreground="red">Red row</span>',))

        treeview = gtk.TreeView(model)
        renderer = gtk.CellRendererText()
        column = gtk.TreeViewColumn('Column', renderer, markup=0)
        treeview.append_column(column)

        scrolled_window = gtk.ScrolledWindow()
        scrolled_window.add(treeview)

        window.add(scrolled_window)
        window.connect('destroy', lambda w: gtk.main_quit())

        window.show_all()


    def run(self):
        gtk.main()


if __name__ == '__main__':
    Application().run()

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

...