来自QWidg的“必须在QPaintDevice之前构造QApplication”

2024-03-29 07:54:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正忙于将一个IRC客户机从Python 2.6移植到3.3,无意中发现了PyQt的一个问题。应用程序最初使用的是PyQt4,我也在重新编码它以使其与PyQt5一起工作,但我得到一个没有任何行引用的错误:“QWidget:必须在QPaintDevice之前构造QApplication”。我把问题缩小到一个班。

我知道这里已经问过很多次了,但我无法为我的案子找到一个确切的答案,所以如果我的问题显得无知,我道歉。

下面是一些代码:http://pastebin.com/Lj60icgQ

愚蠢的我没有把“app”变量放在import语句后面,而我应该放在后面。然后我把剩下的代码放在主文件的底部,我就不会再收到那个错误了。谢谢你的帮助!


Tags: 答案代码应用程序http编码客户机irc错误
2条回答

恐怕在这种情况下,单个文件是不够的——仅仅从这一个模块来看,执行流程是不清楚的。当您试图使用一些资源/创建一些需要初始化QApplication的对象时,通常会出现问题消息,例如QIcon。

基于Qt的GUI应用程序的实例化通常如下所示:

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    main_window = MainWindowClass()
    main_window.show()
    sys.exit(app.exec_())

错误信息非常清楚:在实例化QApplication之前,您试图绘制一个QWidget(在PyQt4.5中继承QPaintDeviceQObject)。但你的代码太大,无法逐行阅读。尝试隔离构建小应用程序和逐步添加功能的错误。或者使用调试器(像Eclipse+PyDev这样的ide应该能够调试您的应用程序)。或者为我们提供一个小的、独立的问题示例。

相关问题 更多 >