PyQt5获取QErrorMessage来阻止Mainwindow

时间:2017-02-13 19:05:21

标签: python user-interface pyqt qt5

在PyQt5中,我认为至少追溯到4,如果用MainWindow初始化QMessageBox作为父节点,它将阻止对MainWindow的任何输入,直到MessageBox被接受,关闭等...

但是,如果使用MainWindow初始化QErrorMessage作为父级,则不会发生此行为。有没有办法将某种窗口参数传递给QErrorMessage,以便它阻止父窗口关闭它?

n.b。我意识到我可以使QMessageBox表现得像一个QErrorMessage。我想知道上述行为是否可行。

1 个答案:

答案 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_()