2012-10-20 38 views
0

我想要獲取python中Gtk3 IconView的選擇顏色,但我很困惑如何解釋現有的C++文檔以及它與Python的關係。如何使用GtkStyleContext獲取小部件的Gtk3選擇顏色

我當前的Python代碼如下:

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

這在Ubuntu 12.04的作品確定 - 侏儒/ GTK 3.2,我認爲。

但是文件在這裏說get_style被廢棄了,因爲3.0

在Ubuntu的12.10它採用了最新的GTK,上述不工作 - 我得到一個錯誤:

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

該文件說我應該使用GtkStyleContext - 但是如何?

任何人都可以給我一個具體的python例子嗎?

+0

它代表「使用GtkStyleContext」。 gtk_widget_get_style_context似乎返回Widget的StyleContext。 gtk_style_context_get_background_color似乎會返回給定狀態的背景顏色。其中一個狀態被命名爲GTK_STATE_FLAG_SELECTED。請注意,我只是在1分鐘內一起黑客攻擊,之前沒有在GTK中使用主題/樣式。 – Ancurio

回答

2

在C:

GdkRGBA color; 
GtkStyleContext *style = 
    gtk_widget_get_style_context(iconview); 
gtk_style_context_get_background_color 
    (style, GTK_STATE_FLAG_SELECTED, &color); 

Python的翻譯fossfreedom:

context = self.iconview.get_style_context() 
color = context.get_background_color(Gtk.StateFlags.SELECTED) 

看來,從GTK2的GtkStyle結構是用更現代的GtkStyleContext類gtk3簡單地更換

相關問題