2017-08-22 19 views
2

Warningのメッセージタイプを設定しても、デフォルトの背景色は青色(Adwaitaテーマ)のようです。私はCSSを使用してpreffer。Gtk.InfoBarの背景色を黄色に変更するにはどうすればいいですか?

example.py

# coding=utf-8 

import gi 
gi.require_version("Gtk", "3.0") 
from gi.repository import Gtk 

w = Gtk.Window() 
ib = Gtk.InfoBar() 

w.add(ib) 
w.connect("delete-event", Gtk.main_quit) 

provider = Gtk.CssProvider() 
provider.load_from_path("style.css") 

w.get_style_context()\ 
    .add_provider(provider, Gtk.STYLE_PROVIDER_PRIORITY_USER) 

w.show_all() 
Gtk.main() 

style.css

infobar { 
    background-color: yellow; 
} 

スクリーンショット:

Screenshot with the problem

すべてのアップデートがインストールされているWindows 10上でPython 2.7.13とGTK + 3.22を使用し、すべてのアップデートがpacman -SyyuでインストールされているMSYS2を使用します。 Python Gtk APIから

答えて

1

Gtk.InfoBarは、名前INFOBARを持つ単一のCSSのノードを持っています。メッセージタイプによっては、のスタイルクラス.info、.warning、.error、.question、 のいずれかが得られることがあります。デフォルトでは

、例えば、Gtk.InfoBarメッセージタイプはGtk.MessageType.INFOであり、あなたのstyle.cssファイルがなければなりません。:

infobar.info { 
    background-color: yellow; 
} 

あなたがメッセージタイプに具体的にすることができますこの方法あなたは設定されていますが、infobarだけでも動作します。利点は、infobar.<messagetype>を使用して各メッセージタイプのカスタム設定を行うことができることです。

EDIT:

変化Gtk.InfoBarインスタンスにCSSクラスを受け取るウィジェット:

ib.get_style_context()\ 
    .add_provider(provider, Gtk.STYLE_PROVIDER_PRIORITY_USER) 

EDIT 2:

CssProviderを追加する(StyleProvider )全体をアプリケーションにGdk.ScreenクラスメソッドGdk.Screen.add_provider_for_screen(more info here

これらの変更を反映するようにコードを変更し、あなたが持っているでしょう:

# coding=utf-8 

import gi 
gi.require_version("Gtk", "3.0") 
from gi.repository import Gtk, Gdk 

w = Gtk.Window() 
ib = Gtk.InfoBar() 

w.add(ib) 
w.connect("delete-event", Gtk.main_quit) 

provider = Gtk.CssProvider() 
provider.load_from_path("style.css") 

Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(), provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION) 

w.show_all() 
Gtk.main() 
+0

私はこのtehniqueをテストしました。それは動作しません。 – silviubogan

+0

@silviubogan申し訳ありませんが、私はウィジェットを設定するのを忘れていました。編集を確認してください。 –

+0

それは動作します!しかし、私はプログラム全体にグローバルなCSSファイルを用意したいと思っています。あなたが説明したテクニックがCSSファイル全体のスタイルを設定したいウィジェットごとに関連付ける場合、どうすればいいですか? – silviubogan

関連する問題