在PyQt5中,我认为至少追溯到4,如果用MainWindow初始化QMessageBox作为父节点,它将阻止对MainWindow的任何输入,直到MessageBox被接受,关闭等...
但是,如果使用MainWindow初始化QErrorMessage作为父级,则不会发生此行为。有没有办法将某种窗口参数传递给QErrorMessage,以便它阻止父窗口关闭它?
n.b。我意识到我可以使QMessageBox表现得像一个QErrorMessage。我想知道上述行为是否可行。
答案 0 :(得分:1)
使用QErrorMessage
setWindowModality(QtCore.Qt.WindowModal)
设为模态
from PyQt5 import QtCore, QtWidgets
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
emsg = QtWidgets.QErrorMessage(self)
emsg.setWindowModality(QtCore.Qt.WindowModal)
cwidget = QtWidgets.QWidget()
layout = QtWidgets.QVBoxLayout(cwidget)
lineedit = QtWidgets.QLineEdit()
button = QtWidgets.QPushButton('Show message')
button.clicked.connect(lambda: emsg.showMessage('Message: ' + lineedit.text()))
layout.addWidget(lineedit)
layout.addWidget(button)
self.setCentralWidget(cwidget)
app = QtWidgets.QApplication([])
win = MainWindow()
win.show()
app.exec_()