QWidget:Must construct a QApplication before a QWidget。


 

異常描述:

      用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尚未起作用。


免責聲明!

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



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