python – “必须在QPaintDevice之前构建一个QApplication”来自QWidget

我正忙着从
Python 2.6到3.3移植一个IRC客户端,我偶然发现了PyQt的问题.该应用程序最初使用PyQt4,我也正在重新编码它以使其与PyQt5一起工作,但我收到一个没有任何行引用的错误:“QWidget:必须在QPaintDevice之前构造一个QApplication”.我已将问题缩小到一个单一的课程.

我知道这里已经多次被问过了,但是我无法为我的案例提供一个肯定的答案,所以如果我的问题看起来无知,我会道歉.

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

愚蠢的我没有在我应该的导入语句之后放置“app”变量.然后我把剩下的代码放在主文件的底部,我不再得到那个错误.谢谢您的帮助!

最佳答案 在这种情况下,我担心单个文件是不够的 – 执行流程不仅仅来自这个模块.当您尝试使用某些资源/创建一些需要初始化QApplication的对象(例如QIcon)时,通常会出现相关消息.

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

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