在Windows的GTK中,如何更改整个应用的背景颜色?

1 投票
3 回答
2336 浏览
提问于 2025-04-15 13:26

根据这个链接,有五种状态类型:STATE_NORMALSTATE_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放在事件框里面。

2

大部分是通过谷歌搜索找到的(这里没有Windows系统),我把这个发成“回答”,主要是为了格式稍微好看一点。可以试试用完整的gtkrc文件,就像这里的那种,看看能不能解决问题。根据这个这个,文件的位置似乎不太一样——所以除非有人能确定找到它的方法,不然用filemon可能是个不错的选择。

作为这些应用程序的普通用户,我更喜欢用我的gtkrc设置,而不是程序员认为“最好”的那些硬编码设置。

撰写回答