Как вы меняете чередующиеся цвета фона строки gtk.TreeView в pygtk? - PullRequest
5 голосов
/ 27 января 2012

Я пытаюсь изменить чередующийся цвет фона дерева.Я знаю, что это обычно следует оставить до темы, но я бы хотел переопределить, чтобы проверить функциональность gtk Style.Согласно документации здесь , я узнал, что TreeView имеет несколько опций стиля, доступных только для чтения, включая «четный рядный цвет», «нечетный рядный цвет» и «разрешающие правила»(что, согласно документации, позволяет рисовать четные и нечетные цвета строк).И я знаю, что для того, чтобы переопределить эти настройки только для чтения, мне нужно изменить стиль в файле или строке в стиле gtkrc.

Итак, моя строка для древовидной структуры выглядит так:

    gtk.rc_parse_string( """
        style "custom-treestyle"{
            GtkTreeView::odd-row-color = "#00CBFF"
            GtkTreeView::even-row-color = "#90EE90"
            GtkTreeView::allow-rules = 1
        }
        widget "*custom_treeview*" style "custom-treestyle"
    """)
    treeview.set_name("custom_treeview" )

Это анализирует без ошибок, и в результате получается, что цвет четного ряда применяется как к четным, так и к нечетным строкам.

РЕДАКТИРОВАТЬ: я обнаружил в ходе еще одного тестирования, что моя строка синтаксического анализа должна быть переопределена из-за других настроек стиля.

print treeview.style_get_property( 'allow-rules' )
print treeview.style_get_property( 'odd-row-color')
print treeview.style_get_property( 'even-row-color')

Дает результат:

True
None
None

Которые все настройки по умолчанию.Обычно я бы подумал, что это просто не анализ строки и установка соответствующих значений, но в этом случае цвет фона меняет на тот цвет, который я указал (только он окрашивает фон каждой строки в один цвет).

Что я делаю не так?

1 Ответ

6 голосов
/ 05 марта 2012

Я наконец понял свою проблему с этим методом моделирования.Свойство стиля allow-rules не является единственным свойством, которое указывает древовидному представлению окрашивать строки чередующимися цветами.Согласно документации, древовидная структура имеет другое свойство , которое указывает движку, что он должен рисовать строки чередующимися цветами.Свойство rules-hint по умолчанию False, когда True успешно окрашивает мой TreeView в чередующиеся нечетные / четные цвета строк!

Итак, в коде добавьте эту строку в код вопроса:

treeview.set_rules_hint( True )

И все, TreeView с чередующимися цветными рядами!

...