用Python设置GtkBox的CSS样式

0 投票
1 回答
556 浏览
提问于 2025-04-30 19:47

有没有办法改变GtkBox这个对象的背景颜色?到目前为止,我在其他对象上使用的所有样式都很好用,但在GtkBox上却不行。你知道为什么吗?这是我的代码

self.Ventana = self.builder.get_object("ventana")
self.Header= self.builder.get_object("header")
self.Ventana.set_name('MyWindow')
self.Header.set_name('header')
self.style_provider = Gtk.CssProvider()
self.css=open(self.ruta+'/css/estilos.css','rb')
self.css_data = self.css.read()
self.style_provider.load_from_data(self.css_data)
Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(),self.style_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)

/*********CSS STYLES *********/
#MyWindow {
    background-color: #1d1d1d;
}
/*i try whit: #MyWindow #header, #MyWindow GtkBox */
#header{
    background-color: #ffffff;
    border-bottom: 1px solid white;
}
暂无标签

1 个回答

1

问题在于,并不是所有的gtk控件都会自己绘制背景。背景的显示是由下面的控件决定的。这个行为在gtk+ 3.12版本中对某些控件进行了更改。

所以,如果你使用的是gtk+ 3.12之前的版本,改变Gtk.Box的背景颜色是无效的。如果你在使用旧版本,可以考虑在Gtk.Box下面加一个Gtk.Viewport,然后改变这个viewport的颜色。

下面是一些代码示例:

box = Gtk.Box()
viewport = Gtk.Viewport()
viewport.add(box)
#and the CssProvder, StyleContext,...

CSS:

GtkViewport {
    background-color: red;
)

撰写回答