在PyGTK标签上设置不透明度

0 投票
1 回答
847 浏览
提问于 2025-04-15 22:54

有没有办法让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”信号。

撰写回答