我正忙于将 IRC 客户端从 Python 2.6 移植到 3.3,我偶然发现了 PyQt 的问题。该应用程序最初使用 PyQt4,我也在对其进行重新编码以使其与 PyQt5 一起使用,但我收到一个没有任何行引用的错误:“QWidget:必须在 QPaintDevice 之前构造一个 QApplication”。我已将问题缩小到一个班级。
我知道这里已经被问过很多次了,但我无法为我的案例提取一个确定的答案,所以如果我的问题显得无知,我深表歉意。
这是一些代码:http: //pastebin.com/Lj60icgQ
愚蠢的我没有在我应该的时候把“app”变量放在导入语句之后。然后我将其余代码放在主文件的底部,我不再收到该错误。谢谢您的帮助!
原文由 bricky149 发布,翻译遵循 CC BY-SA 4.0 许可协议
恐怕在这种情况下单个文件是不够的——仅从这个模块来看执行流程并不清楚。当您尝试使用某些资源/创建一些需要初始化 QApplication 的对象(例如 QIcon)时,通常会出现相关消息。
基于 Qt 的 GUI 应用程序的实例化通常如下所示: