2016-12-01 17 views
1

私のpython Gtk3アプリケーションでコンテキストコンポーネントをレンダリングするために、システムGtk3テーマcss(gtk.css)から特定のプロパティを取得する際に問題があります。python Gtk3からgtk theme cssプロパティを取得

私は私のシステムのテーマgtk.cssから持って何を次のとおりです。私はそれから取得したいと思い何

entry { 
    ... 
    color: #5c616c; 
    border-color: #cfd6e6; 
    background-color: #ffffff; } 
    entry:focus { 
    background-clip: border-box; 
    color: #5c616c; 
    border-color: #5294e2; 
    background-color: #ffffff; } 
    entry:disabled { 
    color: rgba(92, 97, 108, 0.55); 
    border-color: rgba(207, 214, 230, 0.55); 
    background-color: rgba(255, 255, 255, 0.55); } 
    entry.warning { 
    color: white; 
    border-color: #F27835; 
    background-color: #f7ae86; } 
    entry.warning image { 
     color: white; } 
... 

は、これらのコンテキスト色です、例えばentry.warningからbackground-color、など私がはまり込む

私はいくつかの研究を行って、ここでいる:あなたの助けのための

css_provider = Gtk.CssProvider.get_default() 
warning_color = css_provider.get_style(something to put here) 

感謝を!

答えて

3

正しい方法は、Gtk.WidgetGtk.StyleContextをCSSルールが適用されるように変更し、Gtk.render_whatever()関数を使用してコンテキストコンポーネントを描画することです。例えば

Gtk.Entryサブクラスにwarning背景と同じスタイルで背景を描画するには:それはCSSから直接背景を取得することはできません

context = my_entry.get_style_context() 
context.save() 
context.add_class('warning') 
Gtk.render_background(context, blah, blah, blah) 
context.restore() 

注こと。 CSSの背景には、色、画像、グラデーションなどがあります。

+0

ありがとうございました。私のフォローアップの質問は、テキストビューウィジェットでコンテキストカラーをテキストカラー(タグ)として使用したいと思っていて、実際のエントリオブジェクトを持つ必要はありません。 –

+0

私が言ったように、確実に背景色を得ることはできません。なぜなら、特定のウィジェットのための「背景色」は存在しないからです。 'context.get_property()'を使って得ることができるスタイルがいくつかあります。 – ptomato

関連する問題