我正在尝试扩展此解决方案非模态对话框
from PyQt5 import QtWidgets
dialog = None
class Dialog(QtWidgets.QDialog):
def __init__(self, *args, **kwargs):
super(Dialog, self).__init__(*args, **kwargs)
self.setWindowTitle('A floating dialog')
self.resize(250,250)
class Window(QtWidgets.QWidget):
def __init__(self):
QtWidgets.QWidget.__init__(self)
button = QtWidgets.QPushButton('Open Dialog', self)
button.clicked.connect(self.handleOpenDialog)
self.resize(300, 200)
self._dialog = None
global dialog
dialog = Dialog(self)
dialog.show()
def handleOpenDialog(self):
if self._dialog is None:
self._dialog = QtWidgets.QDialog(self)
self._dialog.resize(200, 100)
self._dialog.exec_()
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
win = Window()
win.show()
sys.exit(app.exec_())
如果标题不相关,请道歉。我希望有一个独立于所有现有窗口/对话框的对话框/窗口,并且可以始终与之交互,即应用程序窗口/任何对话框的 GUI 循环不会阻止此非模型对话框。为简单起见,我dialog
在上面的代码片段中使用了全局变量,它将保存非模态对话框实例。
当上面的程序运行时,主窗口和非模态对话框一起出现,两个对话框都是用户交互的,但是当点击按钮时,GUI循环self._dialog
开始,用户不能再与浮动对话框交互,和应用程序窗口。我想要的是能够与之互动dialog
但不能与Window
我想要类似于以下示例的行为:
我从主窗口打开了帮助对话框,然后我打开了一个出现在主窗口顶部的非模态对话框,无法与主窗口交互,但仍然不会阻止帮助对话框/窗口并允许用户与之交互这个非模态窗口,即示例中的帮助对话框。