異常描述:
用PyQt開發的界面程序,再新增加了幾個module后,
在eric6開發環境下啟動后什么都沒出現,什么錯誤提示也都沒有,
在控制台下:python XXXX.py 后顯示 QWidget:Must construct a QApplication before a QWidget。
平常的啟動代碼為:
if __name__ == '__main__': import sys from PyQt5.QtWidgets import QApplication app = QApplication(sys.argv) xx = XXX_Class() xx.show() sys.exit(app.exec_())
原因猜測步驟:
①、簡單拖拽或隨便生成一個簡單的可視化界面: XXX_Class,然后執行上述代碼,界面正常顯示。
②、將上述的紅色背景加粗的代碼注釋掉,然后再執行可視化界面的顯示,什么都沒有顯示而且沒有錯誤提示。
③、繼續將上述的紅色背景加粗的代碼注釋點,在控制台下執行該段代碼,控制台下輸出:
QWidget:Must construct a QApplication before a QWidget
④、因此搜索QApplication類的作用。
巴拉巴拉的,功能還真不少,QApplication 對象做了很多的初始化工作,它必須在所有與用戶界面相關的其它類被創建之前被創建。
⑤、然后回顧新增加的幾個module,發現在一個class的公共屬性中有對可視化類的實例化代碼,將其注釋掉后,整體代碼能正常啟動並能顯示界面了。
個人注解:
在代碼的加載階段不要執行可視化類的初始化操作,因為QApplication尚未起作用。