私の英語を許してください。
css ファイルを使用して GtkButton の背景色を変更しようとしていますが、できません。Web で見つけたいくつかの例を試しましたが、どれも機能しません。2つの例を投稿します。1 つは Python 3.2.3 で、もう 1 つは C で、Gtk+ 3.6 と Kubuntu 12.10 を使用しています。
これはそのうちの1つのコードです:
from gi.repository import Gtk, Gdk
class MainWindow(Gtk.Window):
def __init__(self):
super().__init__()
vbox = Gtk.Box(spacing=10,orientation=Gtk.Orientation.VERTICAL)
self.add(vbox)
self.entries = [ Gtk.Entry() for i in range(3) ]
for e in self.entries:
vbox.pack_start(e, True, True, 0)
e.connect("changed", self.on_entry_changed)
e.set_text('123')
button=Gtk.Button(label='ok')
vbox.pack_end(button,True,True,0)
def on_entry_changed(self,entry):
ctx = entry.get_style_context()
if not entry.get_text().isnumeric():
ctx.add_class('invalid')
else:
ctx.remove_class('invalid')
cssProvider = Gtk.CssProvider()
cssProvider.load_from_path('style.css')
screen = Gdk.Screen.get_default()
styleContext = Gtk.StyleContext()
styleContext.add_provider_for_screen(screen, cssProvider,
Gtk.STYLE_PROVIDER_PRIORITY_USER) # With the others GTK_STYLE_PROVIDER_PRIORITY values get the same result.
window = MainWindow()
window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main()
そしてstyle.css
GtkEntry.invalid {
background-color: #ffaaaa;
background: #ffaaaa;
}
GtkButton {
engine: oxygen-gtk; /*tried also with 'none' and without setting engine*/
background-color: green;
background: green;
}
エントリはうまく機能します...背景の色が変わります。しかし、ボタンはなく、エラーメッセージもありません。
EDIT3: (プレビューの編集を削除し、いくつかのタグを変更します) 要約すると... Web で見つけたすべての Python、C、および C++ コードでボタンの色を変更しようとしましたが失敗しました。見つけたすべてのチュートリアルと GTK+ 3 リファレンス マニュアルを読みました。その後、私が知っているのは、問題がKubuntuテーマに関するものであるということだけです.GTKテーマを「oxygen-gtk」から「デフォルト」に変更すると(GTK構成で)、コードがうまく機能することがわかった唯一の方法ですが、これはアイデアではなく、ボタンはひどいものに見えます。
したがって、質問は次のとおりです。
- ボタンの背景色を変更できないのはなぜですか?
- ボタンだけでこの問題が発生するのはなぜですか? (他のウィジェットとうまく連携します)
- ここと GTK フォーラムで、ボタンの色を変更するのは良い方法ではないという回答が得られますが、... この画像 (リンク) のようなメニューが必要な場合はどうすればよいでしょうか (赤いボックスのボタンを参照)。そのための最善の方法はどれですか?
感謝と挨拶!