Я хочу получить нормальный цвет фона виджета (GtkHeaderBar
, в данном случае). Я в настоящее время используюКак получить цвет фона виджета в GTK и Python?
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
Что мне нужно сделать, чтобы получить эти же значения?
Edit:
Я экспериментировал с 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)
изображение.
К сожалению, я не хочу, чтобы изменить цвет фона с помощью CSS. Я хочу получить текущий фоновый цвет. – user3474251
Yeap, я знаю о 'get_background_color()'. Однако он всегда возвращает 'rgba (0, 0, 0, 0)'. Вероятно, потому что виджет использует градиент ... – user3474251
-1, это не отвечает на вопрос, а 'get_background_color()' устарел, а также не поддерживает фоны, отличные от простых цветов, что не является, если не редко, случай. Большинство кнопок, баров и даже фоновых окон показывают функции градиента в настоящее время. – ElementW