2010-05-19 45 views
0

有沒有辦法讓PyGTK小部件部分透明,以便它後面的小部件可以通過它看到?具體來說,我試圖在標籤上做這件事,因爲印刷效果;我不想改變顏色,因爲它可能不適合所有主題。在PyGTK標籤上設置不透明度

回答

2

不,不可能。如果窗口管理器支持合成,而不是單個小部件,則可以使整個窗口部分透明。

我猜你想要,可以通過「勾兌」的顏色不同成就:

def blend (color1, color2, weight = 0.5): 
    return gtk.gdk.Color (
     color1.red_float * weight + color2.red_float * (1 - weight), 
     color1.green_float * weight + color2.green_float * (1 - weight), 
     color1.blue_float * weight + color2.blue_float * (1 - weight)) 

for state in gtk.StateType.__enum_values__: 
    label.modify_fg (state, blend (label.style.fg[state], label.style.bg[state])) 

使之完全正確的,你也可以聽「風格設置」信號。

+0

謝謝,我會嘗試。 – snostorm 2010-05-19 22:11:55

+0

您可以使用非合成窗口管理器中的形狀合併蒙版來使gdk窗口透明。這是非常醜陋的,但你可以通過使用在窗口上繪製的pixmaps和它們的反色作爲組合模板來模仿標籤。 – 2010-05-27 22:07:37