获取当前GTK样式的颜色

4 投票
1 回答
1610 浏览
提问于 2025-04-16 21:39

我在使用PyGTK,想要获取一个控件的颜色(比如背景颜色),于是我运行了这样的代码:

gdkColorToRgb = lambda gc: (gc.red//257, gc.green//257, gc.blue//257)
widget = gtk.HBox() ## for example
style = widget.get_style()
for i in range(5):
    print i, gdkColorToRgb(style.bg[i])

但是这段代码并没有给我当前GTK主题的颜色(样式)。看起来它是针对默认的GTK主题的(我的当前主题是深色的,而这段代码却给出了浅色的颜色)。我使用的是ArchLinux和PyGTK 2.24.0(GTK 2.24.5)。

1 个回答

5

我刚好遇到了同样的问题,看到你的提问后找到了解决办法:你需要等到这个小部件被创建出来,比如这样:

def print_style(widget):
    style = widget.get_style()
    for i in range(5):
        print i, gdkColorToRgb(style.bg[i])
gdkColorToRgb = lambda gc: (gc.red//257, gc.green//257, gc.blue//257)
widget = gtk.HBox() ## for example
widget.connect('realize', print_style)

撰写回答