請原諒我的英語。爲什麼css風格不適用於GtkButton?
我想改變使用css文件的GtkButton的背景顏色,但我不能。 我嘗試了一些我在網上找到的例子,但都沒有成功。 我發佈了兩個例子。一個在Python 3.2.3和另一個在C 我使用的是Gtk + 3.6和Kubuntu 12.10。
這是其中之一的代碼:
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:(刪除預覽編輯和改變一些標籤) 彙總...我嘗試了所有我在網絡上找到失敗了Python,C和C++代碼更改按鈕的顏色。我閱讀了所有我找到的教程和GTK + 3參考手冊。 所有我知道的問題是關於Kubuntu主題:如果我將GTK主題從'oxygen-gtk'更改爲'默認'(在GTK配置中),是我發現的唯一方法代碼運行良好,但這不是主意,按鈕看起來很可怕。
所以,問題是:
- 爲什麼我不能更改按鈕的背景顏色?
- 爲什麼我只用按鈕來解決這個問題? (適用於其他小工具)
- 我在這裏和GTK論壇上得到了答案,說這不是一個好的做法來改變按鈕的顏色,但是...如果我想要一個像這個圖像的菜單(link)(看到紅色框按鈕)?這是最好的練習嗎?
感謝和問候!
感謝您的幫助!所以,如果這是一個非常粗魯的想法,那麼當開發人員想要創建個性化GUI時,該如何做?最好的做法是使用GTK3創建一個像[鏈接]這樣的菜單(http://c.fsdn.com/con/app/proj/scrmopenerp/screenshots/ProjetatyScrmOpenerp_2.png)? (請參閱紅色框中的按鈕) – 2013-02-22 15:22:21