您的位置:首页 > 移动开发

QWidget:Must construct a QApplication before a QWidget。

2015-08-31 09:56 381 查看
异常描述:

      用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尚未起作用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: