请原谅我的英语。为什么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