python - 从 GTK 获取配色方案
问题描述
我正在使用 Python 3 和 GTK3 开发桌面应用程序。
我需要一个按钮来在悬停时更改其背景颜色,可以这样做:
self.uploadbutton.modify_bg(Gtk.StateType.PRELIGHT, self.color)
到目前为止,我定义了一种与我自己的主题匹配的 RGB 颜色,但由于我必须发布此代码,我想将该颜色更改为已建立的主题颜色之一。
在网上搜索,我发现有一种方法可以使用 GTK2,但是从 GTK 3.8 版开始,该gtk-color-scheme
属性已被弃用。
有没有其他方法可以在不使用此属性的情况下尊重用户主题颜色?
解决方案
目前我找到了两种方法。它们都不是您问题的答案,因为据我所知,在 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())
解析主题不在这个问题范围内。
推荐阅读
- python-3.x - Firestore 从随机生成的文档中获取数据
- r - 如何使用 dplyr 计算条件?
- node.js - 嵌套js中的单元测试
- typescript - TypeScript 是否支持对象类型之间的真正 XOR 联合?
- python - 在 ExpressionWrapper 中结合 Django DateField 和 TimeField 给出 TypeError: expected string or bytes-like object
- javascript - 我想用firebase创建一个react native todo应用程序
- mysql - 使用 vb.net 和 mysql(在线)执行命令时遇到致命错误
- html - 无法使用 pypandoc 将图像从 docx 文件添加到 html 文件
- javascript - 异步函数中的 setState
- workflow - 如何从正在运行的 Snakemake 工作流程中可靠地获取状态信息?