没有搞清楚原因,仅记录解决过程:

在数据库实验中,用QT designer创建了一个MainWindow,需要在插入操作捕获到mysql异常后输出提示信息(不是点击按钮事件),直接调用QMessageBox.critical(self, 'Error', str(err)) 程序会闪退,并且没有显示提示。在网上看到一个说法是QT designer创建的MainWindow不是一个QtWidget(我之前是直接在QT designer创建的类里写的代码),而QMessageBox.xxx(self, , )中的self要求是一个QtWidget,因此最好再定义一个类继承QtWidget.QMainWindowUi_MainWindow,这样修改之后问题就解决了

class Ui_MainWindow(object):... # QT designer生成的代码,不做改动

# 新定义MainWindow类
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self, *args, **kwargs):
        QtWidgets.QMainWindow.__init__(self, *args, **kwargs)
        self.setupUi(self)
        # 以下是自己添加的代码 不贴上来了

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    ui = MainWindow()
    ui.setWindowTitle('学生公寓管理系统')
    ui.show()
    sys.exit(app.exec_())

再遇到QMessageBox.information()时便可成功执行
参考链接

相关文章:

  • 2021-12-13
  • 2021-05-03
  • 2021-06-05
  • 2021-06-10
  • 2021-07-19
  • 2022-12-23
  • 2021-08-29
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-29
  • 2022-12-23
  • 2021-06-28
相关资源
相似解决方案