PyQt - 透明背景

Max*_*rai 5 background pyqt transparent

我试着让窗户的背景透明.但是在它上面的小部件下,我看到了我桌面图像的一部分.现在我在构造函数中有这个:

    self.setFocusPolicy(Qt.StrongFocus)
    self.setAttribute(Qt.WA_QuitOnClose,True)

    self.setBackgroundRole(QtGui.QPalette.Base)
    self.setAttribute(Qt.WA_NoSystemBackground)
Run Code Online (Sandbox Code Playgroud)

小智 2

除了 gs 的回答之外,此常见问题解答还解释了为什么(在 Qt 4.5 之前)您无法实现此目标:

常见问题链接:

不直接支持部分透明,其中窗口是透明的,并且其上的小部件不在 Qt 中。

请记住,PyQt 的最新版本是针对 Qt 4.4 创建的,因此不支持您想要的半透明窗口。如果您将主窗口的背景颜色设置为透明以外的任何颜色,则 gs 的另一个答案,关于 setAutoFillBackground(True) 将会起作用。

另外,请参阅 Qt.WA_NoSystemBackground 的文档,它说您不能依赖迄今为止的透明效果:

Qt::WA_NoSystemBackground

表示widget没有背景,即当widget接收到绘制事件时,不会自动重新绘制背景。注意:与 WA_OpaquePaintEvent 不同,新暴露的区域永远不会填充背景(例如,在第一次显示窗口后,用户可以“透过”它看到它,直到应用程序处理绘制事件)。这是由小部件的作者设置/清除的。