在PyGTK标签上设置不透明度
有没有办法让PyGTK的一个小部件部分透明,这样后面的部件就可以透过它看到?具体来说,我想在一个标签上实现这个效果,主要是为了排版的效果;我不想改变颜色,因为在不同的主题下可能看起来不太对劲。
1 个回答
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]))
为了做到完全正确,你还可以监听“style-set”信号。