我正在尝试在python中获取Gtk3 IconView的选择颜色,但我很困惑如何解释现有的C ++文档以及它与Python的关系。
我目前的python代码如下:
color = self.iconview.get_style().bg[Gtk.StateType.SELECTED]
这在Ubuntu 12.04中运行正常 - 我认为Gnome / Gtk 3.2。
但是,此处的文档说自{3.0}以来已弃用get_style
在使用最新GTK的Ubuntu 12.10中,上面不起作用 - 我收到错误:
CRITICAL **: StackOverflow protection. Can't copy array element into GIArgument
该文件说我应该使用GtkStyleContext - 但是怎么做?
有人能给我一个具体的python示例吗?
答案 0 :(得分:2)
在C:
GdkRGBA color;
GtkStyleContext *style =
gtk_widget_get_style_context(iconview);
gtk_style_context_get_background_color
(style, GTK_STATE_FLAG_SELECTED, &color);
fossfreedom的Python翻译:
context = self.iconview.get_style_context()
color = context.get_background_color(Gtk.StateFlags.SELECTED)
看来gtk2中的GtkStyle
结构只是被gtk3中更现代的GtkStyleContext
类所取代
答案 1 :(得分:0)
新答案是“你没有”。不一定有一种背景颜色。
根据https://developer.gnome.org/gtk3/stable/GtkStyleContext.html#gtk-style-context-get-background-color的文档:
“这个函数远没有它看起来那么有用,它不应该用在新编写的代码中.CSS没有”背景颜色“的概念,因为背景可以是图像,渐变,或任何其他图案包括纯色。“