私はこれを数日間オンとオフでいじっていますが、問題が何であるかを理解できないようです.
基本的に、CSS スタイル宣言を使用して Gtk3 でいくつかの Gtk ウィジェットのスタイルを設定しようとしています。複雑なことは何もありませんが、id/name で特定の要素をターゲットにしようとしています。Gtk.CssProvider() の Gtk ドキュメントには、
#widgetname { background-color: #333333; }
名前が「widgetname」に設定されたウィジェットの有効なセレクターとして機能するはずですが、機能させることができないようです。私は当初、CSS が読み込まれていないと考えていましたが、次のようにトップレベルのウィジェットをターゲットにすることができます。
GtkWindow { background-color: #333; }
スタイルがウィンドウに適用され、背景色が変更されていることがわかります。いくつかの異なるタイプのウィジェット (GtkEventBox、GtkTextView、GtkStatusBar、GtkBox) の ID として名前を使用しようとしましたが、ID ベースのセレクターが機能しないようです。
これは、CSS をロードする方法の短縮されたスニペットです。
css = Gtk.CssProvider()
# css.load_from_file(file)
css.load_from_data('''
GtkWindow {
background-color: #333;
}
GtkEventBox {
background-color: #333;
}
#statusbarwrap, #textview_event_wrap, #box1 {
background-color: #333;
}
''')
style_context = self.get_style_context()
style_context.add_provider(
css,
Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
ここにGtkCssProviderのドキュメントがあります https://developer.gnome.org/gtk3/3.7/GtkCssProvider.html
そのページの例 24 (1、2 ページ下にスクロールするだけ) は、#ID セレクターが有効であり、Glade でウィジェットの名前を設定していることを示しています。
どんな助けでも大歓迎です。