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

发布于 2024-07-30 14:10:39 字数 892 浏览 9 评论 0原文

根据 http://www.pygtk.org/docs/pygtk/gtk- Constants.html,有五种状态类型:STATE_NORMALSTATE_INSENSITIVE等。我想设置Table、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)

没有任何效果。 唯一有效果的是当我手动创建 EventBox 并专门使用现有的 gtk.STATE_NORMAL 颜色与其他颜色混合时。 不过,在没有我干预的情况下由 gtk 创建的所有内容都没有受到影响。

这样做的正确方法是什么? 我不介意必须制作一个 gtkrc 文件或其他文件。 这是因为 hbox、vbox 等没有颜色,但都是透明的吗? 那么谁提供应用程序的一般颜色呢?

According to http://www.pygtk.org/docs/pygtk/gtk-constants.html, there are five state types: STATE_NORMAL, STATE_INSENSITIVE, etc. I want to set the background color of a Table, HBox, VBox, whatever, and I've tried setting every possible color of every kind of state:

    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)

Nothing has any effect. The only one that has any effect is when I manually created EventBoxes and specifically used the existing gtk.STATE_NORMAL color to blend with other colors. All the ones created by gtk without my intervention were not affected, though.

What's the proper way to go about doing this? I wouldn't mind having to make a gtkrc file or whatever. Is this because hbox, vbox, etc., don't have a color, but are transparent? Who provides the general color of the application, then?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

回忆追雨的时光 2024-08-06 14:10:39

主要是 google-fu(这里没有 Windows),作为“答案”发布主要是为了稍微更好的格式。 看看是否可以像 这里 那样尝试使用成熟的 gtkrc 带来了水果。 该位置基于似乎有所不同 - 所以除非有人有找到它的确定性方法,否则 filemon 可能会一个明智的做法。

作为此类应用程序的主要用户,我更喜欢 gtkrc 中的设置,而不是程序员认为随时“最好”的硬编码设置。

Mostly google-fu (no windows here), posting as an "answer" mostly for a slightly better formatting. See if experimenting with the full-blown gtkrc like the one from here brings the fruits. The location, based on this and this appears to vary - so unless someone has the deterministic approach of finding it, filemon could be a sensible approach.

Being mostly a user for these kinds of apps, I would prefer the settings from my gtkrc over the hardcoded by what the programmer thought would be "the best", anytime.

盛夏已如深秋| 2024-08-06 14:10:39

这是因为VBox和Hbox没有关联的Window。
单击此处查看其他没有窗口的小部件。 我将创建事件框并在事件框中添加 HBox 或 VBox。

It's because VBox and Hbox don't have an associated Window.
click here to see other widgets without windows. I would create event boxes and add the HBox or VBox inside the event box.

寄人书 2024-08-06 14:10:39

更改样式后需要调用 self.set_style(style) 。 我使用您的代码作为模板,并添加该行使所有内容的背景都变成绿色。

You need to call self.set_style(style) after changing the style. I used your code as a template and adding that line makes the background of everything green.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文