0

PythonでGtk3IconViewの選択色を取得しようとしていますが、既存のC++ドキュメントの解釈方法とPythonとの関係がわかりません。

私の現在のPythonコードは次のとおりです。

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

これはUbuntu12.04で問題なく動作します-Gnome/Gtk3.2だと思います。

ただし、ここに記載されているドキュメントではget_style、3.0以降は非推奨になっています

最新のGTKを使用するUbuntu12.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)

gtk2のGtkStyle構造体は、gtk3のより新しいGtkStyleContextクラスに単純に置き換えられたようです。

于 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 に答える