我试图扩展这个解决方案,非模态对话
代码语言:javascript运行复制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,它将容纳非模态对话框实例。
当运行上述程序时,主窗口将出现--带有非模式对话框,两个对话框都是用户交互的,但当单击按钮时,self._dialog的GUI循环启动,用户不能再与浮动对话框和应用程序窗口交互。我想要的是能够与dialog进行交互,而不是与Window交互。
我希望行为类似于下面的示例:
我从主窗口打开帮助对话框,然后在主窗口顶部打开一个非模态对话框,它不能与主窗口交互,但仍然不能阻止帮助对话框/窗口,并且允许用户与该非模式窗口(即示例中的帮助对话框)进行交互。