通过引入GObject内省,通过widget.get_style()
方法访问主题颜色的方法已经消失。我感兴趣的是当通过GOBject内省使用GTK +时如何获得主题颜色。该解决方案最好适用于两个版本(2和3),但每个版本的解决方案也是可以接受的。
答案 0 :(得分:6)
我不知道如何从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)>)
我希望这能回答你的问题。