首页 > 解决方案 > 从 GTK 获取配色方案

问题描述

我正在使用 Python 3 和 GTK3 开发桌面应用程序。

我需要一个按钮来在悬停时更改其背景颜色,可以这样做:

self.uploadbutton.modify_bg(Gtk.StateType.PRELIGHT, self.color)

到目前为止,我定义了一种与我自己的主题匹配的 RGB 颜色,但由于我必须发布此代码,我想将该颜色更改为已建立的主题颜色之一。

在网上搜索,我发现有一种方法可以使用 GTK2,但是从 GTK 3.8 版开始,该gtk-color-scheme属性已被弃用

有没有其他方法可以在不使用此属性的情况下尊重用户主题颜色?

标签: pythonpython-3.xgtkpygtkgtk3

解决方案


目前我找到了两种方法。它们都不是您问题的答案,因为据我所知,在 GTK3 中,每个元素都可以有自己的样式(包括颜色)。

第一个是官方的,并说除非您已经测试过主题并且知道您的修改看起来如何,否则不要弄乱主题。我认为这是最好的解决方案,因为在编译时不清楚你是否self.color会让它看起来不错或完全不可读。


第二种解决方案是获取完整的 CSS 并自己解析。

    gset = Gtk.Settings.get_default ()
    themename = gset.get_property ("gtk-theme-name")
    prefdark = gset.get_property ("gtk-application-prefer-dark-theme") # it's a boolean
    cprov = Gtk.CssProvider.get_named (themename)
    print (cprov.to_string())

解析主题不在这个问题范围内。


推荐阅读