2011-07-16 52 views
1

我使用PyGTK的顏色,我希望得到一個小部件的顏色(例如背景顏色),我跑這樣的代碼:獲取的當前GTK風格

gdkColorToRgb = lambda gc: (gc.red//257, gc.green//257, gc.blue//257) 
widget = gtk.HBox() ## for example 
style = widget.get_style() 
for i in range(5): 
    print i, gdkColorToRgb(style.bg[i]) 

但它並沒有給我目前的顏色gtk主題(風格)。它似乎是爲默認gtk主題(我目前的主題是黑暗的,而這段代碼給淺色) 我使用ArchLinux和PyGTK 2.24.0(GTK 2.24.5)

回答

1

我只是偶然發現同樣的問題,看到你的問題,並找到了一個解決方案:你必須等到widget實現,例如像這樣:

def print_style(widget): 
    style = widget.get_style() 
    for i in range(5): 
     print i, gdkColorToRgb(style.bg[i]) 
gdkColorToRgb = lambda gc: (gc.red//257, gc.green//257, gc.blue//257) 
widget = gtk.HBox() ## for example 
widget.connect('realize', print_style) 
+0

非常感謝:) – saeedgnu