Mea*_*EYE 7 python gtk gobject introspection colors
随着GObject内省的引入,通过widget.get_style()方法访问主题颜色的方式消失了.我感兴趣的是当通过GOBject内省使用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')
Run Code Online (Sandbox Code Playgroud)
我认为这应该仍然在gtk + -2.0环境下工作.我不确定,因为我的系统正在运行gnome-shell,并且不能轻易尝试这个.
但是,此方法已被弃用,并由GtkStyleContext替换.如果我在像gnome-shell这样的gtk + -3.0环境中使用上面的代码,它会运行,但不会给我我所追求的信息.我得到的是
(False, <Gdk.Color(red=0, green=0, blue=0)>)
Run Code Online (Sandbox Code Playgroud)
如果我想要颜色信息,我想使用新的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')
Run Code Online (Sandbox Code Playgroud)
这将给我一些真实的数据,这告诉我'fg_color'已被找到,因为元组中的第一个条目是True.
(True, <Gdk.Color(red=0.000000, green=0.000000, blue=0.000000, alpha=1.000000)>)
Run Code Online (Sandbox Code Playgroud)
我希望这回答了你的问题.
| 归档时间: |
|
| 查看次数: |
1039 次 |
| 最近记录: |