PyQt - 透明背景
我尝试使窗口的背景透明。 但在其上的小部件下,我看到了桌面图像的一部分。 现在我在构造函数中有这个:
self.setFocusPolicy(Qt.StrongFocus) self.setAttribute(Qt.WA_QuitOnClose,True) self.setBackgroundRole(QtGui.QPalette.Base) self.setAttribute(Qt.WA_NoSystemBackground)
I try to make the background of my window transparent. But under widgets which are on it i see parts of my desktop-image.
Now i have this in constructor:
self.setFocusPolicy(Qt.StrongFocus) self.setAttribute(Qt.WA_QuitOnClose,True) self.setBackgroundRole(QtGui.QPalette.Base) self.setAttribute(Qt.WA_NoSystemBackground)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我刚刚发现这个:
PyQt 仍然是 Qt 4.4,也许这就是问题所在。
I've just found this:
PyQt is still Qt 4.4, maybe that is the problem.
除了gs的回答之外,此常见问题解答解释了为什么(在Qt 4.5之前)您无法实现此目的:
常见问题解答链接:
请记住,PyQt 的最新版本是针对 Qt 4.4 创建的,因此不支持您想要的半透明窗口。 如果您将主窗口的背景颜色设置为透明以外的任何颜色,则 gs 的另一个答案,关于 setAutoFillBackground(True) 将会起作用。
另外,请参阅 Qt.WA_NoSystemBackground 的文档,它说您不能依赖迄今为止的透明效果:
Qt::WA_NoSystemBackground
Further to gs's answer, this faq explains why (before Qt 4.5) you cannot achieve this:
FAQ Link:
Remember, PyQt's most recent version was created against Qt 4.4, and so does not support the semi-transparent window you desire. gs's other answer, about setAutoFillBackground(True) would work if you were setting the background colour of your main window to anything other than transparent.
Also, see the documentation for Qt.WA_NoSystemBackground, it says you can't depend on the transparent effect that you have so far had:
Qt::WA_NoSystemBackground
为你的小部件尝试这个:
我想你也可以在 Qt Designer 中设置它。
Try this for your widgets:
I think you could also set it in the Qt Designer.