【发布时间】:2011-09-23 22:31:25
【问题描述】:
随着 GObject 内省的引入,通过widget.get_style() 方法访问主题颜色的方式已经不复存在。我对通过 GOBject 自省使用 GTK+ 时如何获取主题颜色感兴趣。该解决方案最好适用于两个版本(2 和 3),但每个版本的解决方案也是可以接受的。
【问题讨论】:
标签: python colors gtk introspection gobject
随着 GObject 内省的引入,通过widget.get_style() 方法访问主题颜色的方式已经不复存在。我对通过 GOBject 自省使用 GTK+ 时如何获取主题颜色感兴趣。该解决方案最好适用于两个版本(2 和 3),但每个版本的解决方案也是可以接受的。
【问题讨论】:
标签: python colors gtk introspection gobject
我不确定如何从 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)>)
如果我想要颜色信息,我想使用新的 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)>)
我希望这能回答你的问题。
【讨论】: