设置 PyGTK 标签的不透明度

发布于 2024-09-02 07:36:30 字数 100 浏览 6 评论 0原文

有没有办法让 PyGTK 小部件部分透明,以便可以透过它看到它后面的小部件?具体来说,我正在尝试在标签上执行此操作,以达到印刷效果;我不想改变颜色,因为它可能在所有主题上看起来都不正确。

Is there a way to make a PyGTK widget partly transparent, so that the widgets behind it can be seen through it? Specifically I'm trying to do this on a label, for typographic effect; I don't want to change the color instead, as it may not look right on all themes.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

九公里浅绿 2024-09-09 07:36:30

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

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

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

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

No, not possible. It is possible to make entire windows partially transparent, if window manager supports compositing, but not individual widgets.

I guess what you want can be achieved differently by "blending" colors:

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

To make it completely correct you can also listen to "style-set" signal.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文