我想获取小部件(在这种情况下是 GtkHeaderBar
)的正常背景颜色。 我目前正在使用
style = self.get_titlebar().get_style_context()
为了获得风格,以及
color = style.get_property("background-color", Gtk.StateFlags.NORMAL)
获取与该样式关联的背景颜色。
但是它返回一个具有以下属性的Gkd.RGBA
对象:
Gdk.RGBA(red=0.000000, green=0.000000, blue=0.000000, alpha=0.000000)
但是如果我打开GTK检视器,选择HeaderBar,并进入样式属性,则会显示如下内容:
background-color | rgb(57,63,63) | gtk-contained-dark.css:1568.29
我需要做什么才能获得相同的值?
编辑:
我正在尝试使用GtkStyleContext.render_background()
,但是我没有成功:
surfc = Cairo.ImageSurface (Cairo.FORMAT_ARGB32, 10, 10)
contx = Cairo.Context(surfc)
style = self.get_titlebar().get_style_context()
backg = Gtk.render_background(style, contx, 10, 10, 10, 10)
surfc.write_to_png("test.png")
生成的文件test.png
是一个rgba(0, 0, 0, 0)
图像。
get_background_color()
。但它总是返回rgba(0, 0, 0, 0)
。可能是因为小部件正在使用渐变... - user3474251get_background_color()
已经被弃用了,也不支持除纯色以外的背景,而这种情况并不少见。现在大多数按钮、工具栏甚至窗口背景都显示渐变特性。 - ElementW