0

我正在尝试在 python 中获取 Gtk3 IconView 的选择颜色,但我很困惑如何解释现有的 C++ 文档以及它与 Python 的关系。

我目前的python代码如下:

color = self.iconview.get_style().bg[Gtk.StateType.SELECTED]

这在 Ubuntu 12.04 中可以正常工作 - 我认为 Gnome/Gtk 3.2。

但是这里的文档说get_style自 3.0 以来已弃用

在使用最新 GTK 的 Ubuntu 12.10 中,上述方法不起作用 - 我收到错误消息:

CRITICAL **: StackOverflow protection.  Can't copy array element into GIArgument

该文件说我应该使用 GtkStyleContext - 但是如何?

谁能给我一个具体的python示例?

4

2 回答 2

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)

似乎GtkStylegtk2 中的结构被简单地替换为GtkStyleContextgtk3 中更现代的类

于 2012-10-21T15:00:13.210 回答
1

新的答案是“你没有”。不再需要单一的背景颜色。

根据https://developer.gnome.org/gtk3/stable/GtkStyleContext.html#gtk-style-context-get-background-color的文档:

“这个功能远没有看起来那么有用,它不应该在新编写的代码中使用。CSS没有“背景颜色”的概念,因为背景可以是图像,或渐变,或任何其他图案,包括纯色颜色。”

于 2015-11-30T17:41:54.957 回答