将QMessageBox正确添加到QMdiArea-关闭问题

时间:2019-07-03 17:25:32

标签: pyqt5 python-3.6 qmessagebox qmdiarea

我正在尝试将QMessageBox添加到QMdiArea。当前它可以按预期工作,除了包含QMdiArea的主窗口外,一旦弹出QMessageBox,X按钮将被禁用。同样,QMessageBox上的X按钮不起作用,但是最小化按钮起作用。

我该怎么做呢?

            msgbox = QMessageBox()
            msgbox.setWindowModality(QtCore.Qt.NonModal)
            msgbox.setWindowTitle('Results')
            msgbox.setText('Test')
            okaybutton = msgbox.addButton('Close', QtWidgets.QMessageBox.YesRole)
            okaybutton.clicked.disconnect()
            okaybutton.clicked.connect(self.closesubwindow)
            graphbutton = msgbox.addButton('View Graphs', QtWidgets.QMessageBox.YesRole)
            graphbutton.clicked.disconnect()
            graphbutton.clicked.connect(self.viewgraph_calculate)
            self.subwindow = QtWidgets.QMdiSubWindow()
            self.subwindow.setWidget(msgbox)
            self.subwindow.setAttribute(QtCore.Qt.WA_DeleteOnClose, True);
            self.subwindow.setWindowFlags(QtCore.Qt.WindowCloseButtonHint | QtCore.Qt.WindowMinimizeButtonHint)
            Data.subwindowarea[-1].addSubWindow(self.subwindow) ## used a list to access the mdiarea in multiple modules
            Data.subwindow.append(self.subwindow)
            self.subwindow.show()

    def closesubwindow(self):
        try:
            newcase = 'Calculate'
            Data.subwindowarea[-1].removeSubWindow(subwindow[-1])
        except:
            tracebackError()

    def viewgraph_calculate(self):
        try:
            print('Graph')
        except:
            tracebackError()

0 个答案:

没有答案