python - 如何更改 pygtk 中 gtk.TreeView 的交替背景行颜色?

标签 python gtk pygtk gtktreeview

我正在尝试更改 TreeView 的交替背景颜色。我知道这通常应该留给主题,但我想覆盖以测试 gtk 样式功能。根据 TreeView 文档 here ,我了解到 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" )

这分析没有错误,结果是 even-row-color 被应用到偶数行和奇数行。

编辑:我从更多测试中发现我的解析字符串必须被其他一些样式设置覆盖。

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 )

就是这样,一个带有交替彩色行的 TreeView!

关于python - 如何更改 pygtk 中 gtk.TreeView 的交替背景行颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9036812/

相关文章:

python - 将Python程序从GTK+2移植到GTK+3

Python POST 请求 - 设置整个原始帖子正文?

c - 如何消除同一程序的 gui 和命令行界面之间的区域设置差异?

c - 我需要一些帮助来获取 gtk 编程的标准。对此我能做什么呢?

python - 如何从流中加载图像文件到 gtk.gdk.Pixbuf?

python - gtk3+拦截鼠标点击框架

python - 在python中遍历mysql中的行

python - 在整个磁盘中删除最旧的文件

从数组构建Python字符串

python - pygtk图像网格