PyGTK中的小部件透明度?

0 投票
1 回答
1295 浏览
提问于 2025-04-15 15:32

在PyGTK应用程序中,怎样才能让特定的控件变得透明呢?我不想用主题,因为每个控件的透明度会随着动画而变化。

我找到的唯一方法是使用cairo来绘制带有透明度的控件,但我不知道该怎么做。有没有其他更好的方法呢?

谢谢!

1 个回答

3

假设你的程序是在一个合成管理器下运行的,你可以通过调整小部件的X窗口来实现每个小部件的透明效果。可以看看这个链接:gtk.gdk.Window.set_opacity()

注意,这里说的不是gtk.Window;你可以通过获取它的window属性(比如buttonWidget.window)来获取这个对象,但前提是小部件已经被创建并且能够处理事件——比如说,gtk.Label就没有自己的X窗口。

如果你需要在没有合成管理器的情况下工作,自己绘制小部件是唯一的选择——不过你不一定要使用cairo;在裸X窗口上逐个像素绘制也是可以的。

撰写回答