您希望背景(桌面)的不透明度降低吗?背景“背后”没有任何东西,所以改变不透明度没有任何意义。我猜你想要的东西类似于 Windows UAC 对话框的工作方式。就像安装软件时会出现一个确认对话框,然后屏幕的其余部分会变黑。
这可以通过创建具有降低不透明度的单一颜色的全屏无边框窗口并在其上打开对话框来模拟。
对于无框/无边框窗口,我找到了对 QtCore.Qt.FramelessWindowHint 的引用和一个名为 QWindow.setMask() 的方法。任何一个都可能工作。
这是 FramelessWindowHint 用法的示例。
希望这会有所帮助。
编辑:添加代码示例(基于链接中的示例):
import sys
from PySide import QtCore, QtGui
class MyWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MyWindow, self).__init__(parent)
self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
self.b = QtGui.QPushButton("exit", self, clicked=self.close)
self.setWindowOpacity(.8)
self.setStyleSheet("QMainWindow { background: 'black'}");
self.dialog = QtGui.QDialog()
self.dialog.setModal(True)
self.dialog.show()
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
myapp = MyWindow()
myapp.setGeometry(app.desktop().screenGeometry())
myapp.show()
sys.exit(app.exec_())
这仅适用于单个屏幕。您必须枚举屏幕并为每个单独的屏幕创建一个窗口以涵盖多屏幕设置。我会把它留给你作为练习。