Python PyQt-如何在对话框后面淡入桌面背景(类似于Windows UAC)?
我想知道PYTHON中的pyqt是否有这么多功能,但是对话框是否可能位于屏幕的中心(我知道这是可能的),并且对话框外侧的sourounding区域的不透明度大约为50%,因此基本上它仍然可以看到,但您无法完全看到它。这可能吗?确保您理解我在对话框外部而不是内部谈论的内容。我想为我的简单锁屏应用程序这不是很安全,但我会在以后的工作。我试过了Python PyQt-如何在对话框后面淡入桌面背景(类似于Windows UAC)?,python,pyqt,Python,Pyqt,我想知道PYTHON中的pyqt是否有这么多功能,但是对话框是否可能位于屏幕的中心(我知道这是可能的),并且对话框外侧的sourounding区域的不透明度大约为50%,因此基本上它仍然可以看到,但您无法完全看到它。这可能吗?确保您理解我在对话框外部而不是内部谈论的内容。我想为我的简单锁屏应用程序这不是很安全,但我会在以后的工作。我试过了 self.setWindowOpacity(.8) 但这只适用于我想影响外面的窗户 我知道这听起来不太容易理解,但是如果您需要更多的解释,请在评论中告诉我。
self.setWindowOpacity(.8)
但这只适用于我想影响外面的窗户
我知道这听起来不太容易理解,但是如果您需要更多的解释,请在评论中告诉我。您希望背景(桌面)的透明度降低吗?背景后面没有任何东西,因此更改不透明度没有任何意义。我想你想要类似于WindowsUAC对话框的工作方式。与安装软件时一样,会显示一个确认对话框,屏幕的其余部分会变黑 这可以通过创建一个单色全屏无边框窗口来模拟,并降低不透明度,然后在上面打开对话框 对于无框架/无边界窗口,我找到了对QtCore.Qt.FramelessWindowHint和一个名为QWindow.setMask()的方法的引用。任何一个都可以 希望这是有帮助的 编辑:添加代码示例(基于链接中的示例):
这只适用于单个屏幕。您必须枚举屏幕,并为每个单独的屏幕创建一个窗口,以覆盖多屏幕设置。我将把它作为练习留给您。您希望背景(桌面)的不透明度更小吗?背景后面没有任何东西,因此更改不透明度没有任何意义。我想你想要类似于WindowsUAC对话框的工作方式。与安装软件时一样,会显示一个确认对话框,屏幕的其余部分会变黑 这可以通过创建一个单色全屏无边框窗口来模拟,并降低不透明度,然后在上面打开对话框 对于无框架/无边界窗口,我找到了对QtCore.Qt.FramelessWindowHint和一个名为QWindow.setMask()的方法的引用。任何一个都可以 希望这是有帮助的 编辑:添加代码示例(基于链接中的示例):
这只适用于单个屏幕。您必须枚举屏幕,并为每个单独的屏幕创建一个窗口,以覆盖多屏幕设置。我将把它作为练习留给你。我试着添加一个窗口,然后在上面添加一个对话框,但无法实现,我有点被你所说的“创建一个全屏无边框的单色对话框,降低透明度,并在上面绘制对话框”弄糊涂了。你有时间键入一些示例代码吗?感谢添加的代码示例。我使用的PySide或多或少与PyQt等价,您所要做的(我认为)就是更改导入,或者切换到PySide:)。请您更改标题以更好地反映问题,好吗?“PyQt-如何在对话框(类似于Windows UAC)后淡出桌面背景?”例如,我意识到我弄乱了一些单词,并稍微更改了措辞以使其清晰。你的代码帮了大忙现在我有了Windows UAC风格的witch,这正是我所要找的我尝试添加了一个窗口,然后在上面添加了一个对话框,但是我不能让它工作,我有点被你所说的“创建一个全屏无边框的单色对话框,降低不透明度,并在上面画你的对话框”弄糊涂了。你有时间键入一些示例代码吗?感谢添加的代码示例。我使用的PySide或多或少与PyQt等价,您所要做的(我认为)就是更改导入,或者切换到PySide:)。请您更改标题以更好地反映问题,好吗?“PyQt-如何在对话框(类似于Windows UAC)后淡入桌面背景?”例如,我意识到我弄乱了一些单词,并稍微更改了措辞以使其清晰。你的代码帮了大忙,现在我有了Windows UAC风格的witch,这正是我所寻找的
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_())