Вопрос

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

Это было полезно?

Решение

У меня была та же проблема, и, после пробования разных альтернатив, используя 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 Свойства в то же время, кажется, работают нормально.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top