Ubuntu 12.10 - установить чередующиеся цвета строк в gtk3 TreeView

В Ubuntu использовались чередующиеся цвета строк для виджетов gtk TreeView. Некоторые приложения до сих пор, как Banshee. Чередование цветов строк действительно поможет моему приложению (написанному на python 2.7 и использующем gi.repository, а не pygtk), которое я разрабатываю.

Я знаю, что могу установить подсказку с помощью

treeview.set_rules_hint(True)

Однако это не работает. Кто-нибудь знает, как включить чередующиеся цвета строк?

2
задан 1 March 2013 в 01:56

1 ответ

Будет ли set_rules_hint(True) отображать чередующиеся цвета строк, зависит от темы. По умолчанию в Ubuntu, Ambience, чередующихся строк не будет. Как указано в документации :

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

Тем не менее, вы можете заставить его, если вы действительно хотите. Например, это будет работать в Ambience:

view.set_rules_hint(True)
style_context = self.get_style_context()
css_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);
    }
    """
css_provider.load_from_data(css.encode('UTF-8'))
screen = Gdk.Screen.get_default()
style_context.add_provider_for_screen(screen, css_provider,
                                  Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)

Хотя вы должны знать, что это может нарушить другие темы. В некоторых темах будет использоваться @theme_base_color вместо @base_color. Вы можете, конечно, жестко кодировать цвет, но кто знает, как это будет выглядеть в пользовательской теме ...

0
ответ дан 1 March 2013 в 01:56

Другие вопросы по тегам:

Похожие вопросы: