gpt4 book ai didi

python - 使用 python 和 GObject 自省(introspection)获取 GTK+ 主题颜色

转载 作者:太空狗 更新时间:2023-10-29 21:47:39 24 4
gpt4 key购买 nike

随着 GObject 自省(introspection)的引入,通过 widget.get_style() 方法访问主题颜色的方式已经不存在了。我对通过 GOBject 自省(introspection)使用 GTK+ 时如何获得主题颜色感兴趣。该解决方案最好适用于两个版本(2 和 3),但也可以接受适用于每个版本的解决方案。

最佳答案

我不确定如何从 gtk+-2.0 获取它,除非您使用纯 gtk+-2.0 环境,在这种情况下我认为旧的 GtkStyle 方法有效。例如,假设您没有运行像 gnome-shell 这样的 Gtk-3.0 环境

import gi
# make sure you use gtk+-2.0
gi.require_version('Gtk', '2.0')
from gi.repository import Gtk

window = Gtk.Window()

...

style = window.get_style()
print style.lookup_color('fg_color')

我认为它在 gtk+-2.0 环境下应该仍然有效。我不确定,因为我的系统正在运行 gnome-shell,并且不能轻易尝试。

但是这个方法已经被弃用并被 GtkStyleContext 取代。如果我在像 gnome-shell 这样的 gtk+-3.0 环境中使用上面的代码,它会运行,但不会给我我想要的信息。我得到的是

(False, <Gdk.Color(red=0, green=0, blue=0)>)

编辑:回顾这一点,我认为上面的信息仍然是正确的。未找到 fg_color 的颜色,如元组结果中的第一个条目所示,即 False。此外,窗口必须可见才能找到颜色。

例如,如果我想要颜色信息,我想使用新的 GtkStyleContext

import gi
# make sure you use gtk+-3.0
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

window = Gtk.Window()

...

style_context = window.get_style_context()
print style_context.lookup_color('fg_color')

这会给我一些真实数据,告诉我已经找到“fg_color”,因为元组中的第一个条目是 True。

(True, <Gdk.Color(red=0.000000, green=0.000000, blue=0.000000, alpha=1.000000)>)

我希望这能回答您的问题。

关于python - 使用 python 和 GObject 自省(introspection)获取 GTK+ 主题颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6500525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com