QT designer QMessageBox不顯示並閃退問題


沒有搞清楚原因,僅記錄解決過程:

在數據庫實驗中,用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()時便可成功執行
參考鏈接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM