GTK3:听主题变化

GTK3: listen to theme changes

我正在寻找一种方法,在 PyGObject 应用程序上,当有主题更改时得到通知。

我需要此通知,因为我正在使用 matplotlib 绘制图表,并且我将图表的文本颜色设置为当前 GTK3 主题的标准标签颜色:

temp_label = Gtk.Label()
scrolled_window.add(temp_label)
text_color = rgba_to_hex(temp_label.get_style_context().get_color(Gtk.StateType.NORMAL))

但是,当用户切换主题时,我需要获取新的标签颜色并重新绘制图表。

目前,从深色主题变为浅色主题会使标签变得不可读:

我发现最接近的是连接到 gtk-theme-name:

Gtk.Settings.get_default().connect("notify::gtk-theme-name", self._on_theme_name_changed)

@staticmethod
def _on_theme_name_changed(settings, gparam):
    print("Theme name:", settings.get_property("gtk-theme-name"))