在Windows的GTK中,如何更改整个应用的背景颜色?
根据这个链接,有五种状态类型:STATE_NORMAL
、STATE_INSENSITIVE
等等。我想给一个表格、水平盒子(HBox)、垂直盒子(VBox)或者其他东西设置背景颜色,我尝试了所有可能的颜色和各种状态:
style = self.get_style()
for a in (style.base, style.fg, style.bg,
style.light, style.dark, style.mid,
style.text, style.base, style.text_aa):
for st in (gtk.STATE_NORMAL, gtk.STATE_INSENSITIVE,
gtk.STATE_PRELIGHT, gtk.STATE_SELECTED,
gtk.STATE_ACTIVE):
a[st] = gtk.gdk.Color(0, 34251, 0)
但是没有任何效果。唯一有效的方式是我手动创建了事件盒子(EventBoxes),并特别使用了现有的gtk.STATE_NORMAL颜色来和其他颜色混合。可是那些由gtk自动创建的盒子却没有受到影响。
那我该怎么做才对呢?我不介意创建一个gtkrc文件或者其他什么的。这是因为hbox、vbox等没有颜色,而是透明的吗?那么,应用程序的整体颜色又是谁提供的呢?
3 个回答
0
你需要在改变样式之后调用 self.set_style(style)
这个方法。我用你的代码做了个模板,添加了这一行后,所有东西的背景都变成绿色了。
1
这是因为VBox和Hbox没有关联的窗口。点击这里可以查看其他没有窗口的控件。我会创建事件框,然后把HBox或VBox放在事件框里面。