【问题标题】:Setting opacity on a PyGTK label在 PyGTK 标签上设置不透明度
【发布时间】:2011-02-21 14:06:10
【问题描述】:

有没有办法使 PyGTK 小部件部分透明,以便可以通过它看到它后面的小部件?具体来说,我试图在标签上这样做,以获得印刷效果;我不想改变颜色,因为它可能看起来并不适合所有主题。

【问题讨论】:

    标签: python gtk transparency pygtk opacity


    【解决方案1】:

    不,不可能。如果窗口管理器支持合成,则可以使整个窗口部分透明,但不支持单个小部件。

    我猜你想要的可以通过“混合”颜色以不同的方式实现:

    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]))
    

    为了使其完全正确,您还可以收听“样式设置”信号。

    【讨论】:

    • 您可以在非合成窗口管理器中使用形状组合蒙版使 gdk 窗口透明。它非常难看,但是您可以通过使用在窗口上绘制的像素图来模仿标签,并将它们的反转作为组合掩码。
    猜你喜欢
    • 2011-04-16
    • 1970-01-01
    • 2016-04-07
    • 2018-07-26
    • 2014-09-05
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    相关资源
    最近更新 更多