python - 从 GTK 获取配色方案

标签 python python-3.x gtk pygtk gtk3

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

我需要一个按钮来在悬停时改变它的背景颜色,这可以用这个来完成:

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

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

在网上搜索,我找到了 there's a way to do it with GTK2 , 但从 GTK 3.8 版开始,gtk-color-scheme 属性一直是 deprecated .

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

最佳答案

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

第一个是official并说不要弄乱主题,除非你已经测试过它们并且知道你的修改会是什么样子。我认为这是最好的解决方案,因为在编译时并不清楚您的 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 - 从 GTK 获取配色方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50644945/

相关文章:

python - 我如何在 Flask/WSGI 服务器中使用应用程序工厂,为什么它可能不安全?

python-3.x - 在 tensorflow 数据集上应用 map 执行速度非常慢

python - 有没有办法使 psutil 输出在运行之间保持一致?

python - PRAW:如何获取只有评论 ID 的 reddit 评论对象?

python - 喀拉斯 2 : Using lambda function in "Merge" layers

gtk - 如何使用 GTK+ 将 HTML 粘贴到剪贴板

haskell - 在 gtk2hs 中的事件处理程序之间切换

c# - Mono C# 的 CSS 样式

python - HTSQL 中的数据透视表或交叉表查询

sockets - 有人可以解释一下 "from socket import example"和 "import socket"之间的区别吗?