Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在pygtk中更改gtk.TreeView的交替背景行颜色?_Python_Gtk_Pygtk_Gtktreeview - Fatal编程技术网

Python 如何在pygtk中更改gtk.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风格的功能。根据treeview文档,我了解到treeview有几个只读的样式选项,包括“偶数行颜色”、“奇数行颜色”和“允许规则”(根据文档,允许绘制偶数行和奇数行颜色)。我知道为了覆盖那些只读设置,我必须更改gtkrc样式文件或字符串中的样式

因此,我的treeview字符串如下所示:

    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 )
就是这样,一个有交替颜色行的树景