1

我想知道PYTHON中的 pyqt是否具有这么多的功能,但是是否可以让对话框位于屏幕的中心(我知道这是可能的)并且对话框外侧的环绕区域的不透明度约为大约 50% 所以基本上它仍然可见,但你不能完全看到它。这可能吗?确保您理解我在对话框之外而不是在里面谈论的内容。我想要这个用于我的简单锁屏应用程序,它不是很安全,但我稍后会处理。我试过了

self.setWindowOpacity(.8)

但这仅适用于我想影响到外面的窗户

我知道这听起来不太容易理解,但如果您需要更多解释,请在评论中告诉我。

4

1 回答 1

4

您希望背景(桌面)的不透明度降低吗?背景“背后”没有任何东西,所以改变不透明度没有任何意义。我猜你想要的东西类似于 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_())

这仅适用于单个屏幕。您必须枚举屏幕并为每个单独的屏幕创建一个窗口以涵盖多屏幕设置。我会把它留给你作为练习。

于 2013-08-15T22:31:03.077 回答