Как добавить разные цвета в нечетные и четные строки в pygtk TreeView

Я создал pygtk TreeView и хотел добавить разные цвета между каждой строкой. Я пошел сюда, и он говорит, что существует свойство TreeView Style, которое делает то же самое. Свойство называется 'odd-row-color' и 'even-row-color'. Итак, перешел к моему коду и попытался применить это с помощью set_property(). Но я получаю сообщение об ошибке для этого

    self.customer_view.set_property('even-row-color', gtk.gdk.Color(211, 211, 211))
TypeError: object of type `GtkTreeView' does not have property `even-row-color' 

Как можно этого добиться. И где это свойство обрабатывается?

1 ответ

Решение

Вы можете использовать css (GTK3), чтобы изменить цвета, например:

style_provider = Gtk.CssProvider()
css = '''
GtkTreeView row:nth-child(even) { background-color: shade(@base_color, 0.9); }
GtkTreeView row:nth-child(odd) { background-color: shade(@base_color, 1.0); }
'''
style_provider.load_from_data(css.encode('utf8'))

Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(),
                            style_provider,
                            Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)

Обязательно сообщите GTK, что вы хотите рисовать альтернативные цвета:

treeview.set_rules_hint(True)
Другие вопросы по тегам