В Ubuntu использовались чередующиеся цвета строк для виджетов gtk TreeView. Некоторые приложения до сих пор, как Banshee. Чередование цветов строк действительно поможет моему приложению (написанному на python 2.7 и использующем gi.repository, а не pygtk), которое я разрабатываю.
Я знаю, что могу установить подсказку с помощью
treeview.set_rules_hint(True)
Однако это не работает. Кто-нибудь знает, как включить чередующиеся цвета строк?
Будет ли set_rules_hint(True)
отображать чередующиеся цвета строк, зависит от темы. По умолчанию в Ubuntu, Ambience, чередующихся строк не будет. Как указано в документации :
Не используйте его только потому, что предпочитаете внешний вид управляемого дерева; это вопрос к теме. Некоторые темы будут рисовать строки дерева чередующимися цветами, даже если правила отключены, и пользователи, которые все время предпочитают этот вид, могут выбирать эти темы. Вы должны вызывать эту функцию только как семантическую подсказку для механизма тем, что ваше дерево делает чередующиеся цвета полезными с функциональной точки зрения (так как обычно у него много столбцов).
blockquote>Тем не менее, вы можете заставить его, если вы действительно хотите. Например, это будет работать в 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
. Вы можете, конечно, жестко кодировать цвет, но кто знает, как это будет выглядеть в пользовательской теме ...