5

ツリービューの背景色を交互に変更しようとしています。通常、これはテーマに任せる必要があることはわかっていますが、gtkスタイルの機能をテストするためにオーバーライドしたいと思います。ここのtreeviewのドキュメントによると、TreeViewには、「even-row-color」、「odd-row-color」、「allow-rules」(ドキュメントによると)など、読み取り専用のスタイルオプションがいくつかあることを学びました。 、偶数行と奇数行の色の描画を可能にします)。そして、これらの読み取り専用設定をオーバーライドするには、gtkrcスタイルのファイルまたは文字列のスタイルを変更する必要があることを知っています。

したがって、ツリービューの文字列は次のようになります。

    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

これはすべてデフォルト設定です。通常は、文字列を解析して適切な値を設定するだけではないと思いますが、この場合、背景色指定した色に変わります(すべての行の背景を1色にペイントするだけです)。

私は何が間違っているのですか?

4

1 に答える 1

6

私はついにこのスタイリング方法の問題を理解しました。'allow-rules'スタイルプロパティは、ツリービューに行を交互の色で着色するように指示する唯一のプロパティではありません。ドキュメントによると、ツリービューには、行を交互の色で描画する必要があることをエンジンに示唆する別のプロパティがあります。'rules-hint'プロパティ、デフォルトではFalse、TrueがTreeViewを奇数/偶数行の交互の色で正常に色付けする場合!

したがって、コードで、この行を質問のコードに追加します。

treeview.set_rules_hint( True )

これで、色付きの行が交互に表示されるTreeViewになりました。

于 2012-03-05T16:15:22.013 に答える