当前位置: 首页 > 面试题库 >

来自QWidget的“必须在QPaintDevice之前构造一个QApplication”

葛阳华
2023-03-14
问题内容

我正忙于将IRC客户端从Python
2.6移植到3.3,我偶然发现了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_())


 类似资料:
  • 我得到以下错误: 一个月后,我正在检查我的程序,之前相同的代码没有给出错误,我想我没有改变任何可能导致这一点的东西。我试图解决这个问题;所以在第1行的错误中提到:

  • 问题内容: 为什么Eclipse总是在构造函数上给我错误: 错误是: 类 密集板 类 板 问题答案: 您只需执行此操作即可将值发送到父类。

  • 无法理解为什么会出现此错误。在记事本中工作,通过cmd运行javac(显然更多的是文件)。如果你需要我链接更多,我可以。我的错误发生在“setCruiseShip”中,我试图将电流链接到超类。错误:对super的调用必须是构造函数中的第一条语句。

  • 我目前正在处理一个Spring Boot项目,我们有一个application.properties文件,它定义了一个路径,我们有2个jks文件。(原始文件有更多的键/值对,但我专注于这两对的主要问题) 实例 但是现在,我需要读取一个环境变量,其中包含一个编码值,我需要获取、解码和使用它来创建这些文件。主要问题是,我需要在属性“加载”之前创建这两个文件,因为这些文件不存在,如果我首先不构建它们,有

  • 问题内容: 为什么必须在构造函数完成之前初始化最终变量? 当我编译这段代码时,我得到这样的错误 err:变量q可能尚未初始化 问题答案: 官方理由是,它是由定义的Java语言规范8.3.1.2: 必须在声明该类的每个构造函数的末尾绝对分配一个空白的最终实例变量;否则会发生编译时错误。 空白的final是其声明缺少初始化程序(即您所描述的内容)的final变量。

  • 如果将移到构造函数的最后一行,我不明白为什么下面的代码会显示错误。 我已经检查了很多关于StackOverflow的答案,但我仍然不能理解这其中的原因。请帮我用一些简单的例子和解释弄清楚这个错误。