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