我尝试让窗口的背景透明。但是在它上面的小部件上,我看到了桌面图像的一部分。 现在我在构造函数中有这个:
self.setFocusPolicy(Qt.StrongFocus) self.setAttribute(Qt.WA_QuitOnClose,True) self.setBackgroundRole(QtGui.QPalette.Base) self.setAttribute(Qt.WA_NoSystemBackground)
答案 0 :(得分:4)
我刚刚找到this:
创建半透明Windows
从Qt 4.5开始,就有可能 创建半透明的窗户 窗口系统上支持的区域 合成
在顶级中启用此功能 小部件,设置它 Qt :: WA_TranslucentBackground属性 使用setAttribute()并确保 它的背景是涂上了 您所在地区的非不透明颜色 希望部分透明。
PyQt仍然是Qt 4.4,也许这就是问题。
答案 1 :(得分:2)
试试这个小工具:
widget.setAutoFillBackground(True)
我想你也可以在Qt Designer中设置它。
答案 2 :(得分:2)
除了gs的回答,这个常见问题解释了为什么(在Qt 4.5之前)你无法做到这一点:
没有直接支持部分 透明度,窗口在哪里 透明和它上面的小部件 不在Qt。
请记住,PyQt的最新版本是针对Qt 4.4创建的,因此不支持您想要的半透明窗口。关于setAutoFillBackground(True)的gs的另一个答案是,如果你将主窗口的背景颜色设置为透明以外的任何其他颜色。
另外,请参阅Qt.WA_NoSystemBackground的文档,它说你不能依赖于迄今为止的透明效果:
表示窗口小部件没有 背景,即小部件 收到油漆事件,背景 不会自动重新绘制。注意: 与WA_OpaquePaintEvent不同,是新的 暴露的区域永远不会被填满 背景(例如显示一个 用户可以第一次看到窗口 看到“通过”直到申请 处理油漆事件)。这是 由小部件的作者设置/清除。