Python 如何在pygtk中更改gtk.TreeView的交替背景行颜色?
我正在尝试更改树视图的交替背景色。我知道这通常应该由主题决定,但我想重写以测试gtk风格的功能。根据treeview文档,我了解到treeview有几个只读的样式选项,包括“偶数行颜色”、“奇数行颜色”和“允许规则”(根据文档,允许绘制偶数行和奇数行颜色)。我知道为了覆盖那些只读设置,我必须更改gtkrc样式文件或字符串中的样式 因此,我的treeview字符串如下所示:Python 如何在pygtk中更改gtk.TreeView的交替背景行颜色?,python,gtk,pygtk,gtktreeview,Python,Gtk,Pygtk,Gtktreeview,我正在尝试更改树视图的交替背景色。我知道这通常应该由主题决定,但我想重写以测试gtk风格的功能。根据treeview文档,我了解到treeview有几个只读的样式选项,包括“偶数行颜色”、“奇数行颜色”和“允许规则”(根据文档,允许绘制偶数行和奇数行颜色)。我知道为了覆盖那些只读设置,我必须更改gtkrc样式文件或字符串中的样式 因此,我的treeview字符串如下所示: gtk.rc_parse_string( """ style "custom-treestyle"{
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
这些都是默认设置。通常我会认为它只是不解析字符串并设置适当的值,但在这种情况下,背景颜色确实会更改为我指定的颜色(仅将每行的背景绘制为一种颜色)
我做错了什么?我终于用这种造型方法解决了我的问题。 “allow rules”样式属性不是告诉treeview以交替颜色为行着色的唯一属性。根据文档,treeview有另一个属性,提示引擎应该以交替颜色绘制行。“rules hint”属性默认为False,如果为True,则会以奇数/偶数行交替颜色成功为我的TreeView着色 因此,在代码中,将这一行添加到问题的代码中:
treeview.set_rules_hint( True )
就是这样,一个有交替颜色行的树景