PyQt5在执行示例代码后给出错误代码[重复]

Posted

技术标签:

【中文标题】PyQt5在执行示例代码后给出错误代码[重复]【英文标题】:PyQt5 gives error code after execution of example code [duplicate] 【发布时间】:2019-07-10 16:43:51 【问题描述】:

执行以下代码后

# ===

from PyQt5.QtWidgets import QApplication, QLabel

app = QApplication([])
label = QLabel('Hello World!')
label.show()
app.exec_()

# ===

from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPalette
from PyQt5.QtWidgets import QApplication, QPushButton

app = QApplication([])
app.setStyle('Fusion')
palette = QPalette()
palette.setColor(QPalette.ButtonText, Qt.red)
app.setPalette(palette)
button = QPushButton('Hello World')
button.show()
app.exec_()

我收到错误:

Process finished with exit code -1073741819 (0xC0000005)

我在 PyCharm 版本 2019.1.3 和 Windows 10 上使用 Python 3.7PyQt5。我重新安装了软件包,重新安装了 Pycharm,但无济于事。

这可能是特定于 Windows 的错误。或者我通过重新定义应用程序变量违反了 PyQt 工作方式。

我可以通过在单独的 python 环境中执行这两个“程序”来单独运行它们,但不能一个接一个地运行。 如果我不在 Pycharm 中执行代码,我会看到我在定义 app.setPalette(palette) 后被踢出 Python,并运行了第一部分。或者在label = QLabel('Hello World!') 之后,在运行第二部分之后。

关于为什么会发生这种情况的任何额外信息都会很好:) 因为我不明白那部分。 关于“不要那样做”的解决方案不会帮助我理解问题。提前致谢

【问题讨论】:

好的,在 Win10 上运行带有 pyqt5 的 Python 3.7,我复制/粘贴了你提供的内容,我完全没有错误 - 得到一个非常丑陋的小窗口,但它运行正常 - 哦,让我澄清一下我将它们粘贴到一个文件中并运行该文件 所以我重新阅读了您的问题 - 我分别运行了它们 - 并且我没有得到任何一个错误。现在这些是 2 个独立的可执行迷你程序,所以我认为您没有理由以一种它们会相互踩踏和/或完全出错的方式运行它们。 【参考方案1】:

试试看:

from PyQt5.QtWidgets import QApplication, QLabel, QPushButton
from PyQt5.QtCore import Qt, QRect, QSize
from PyQt5.QtGui import QPalette


def closeEvent():
    app = QApplication([])
    app.setStyle('Fusion')
    palette = QPalette()
    palette.setColor(QPalette.ButtonText, Qt.red)
    app.setPalette(palette)
    button = QPushButton('QPushButton: Hello World')
    button.show()
    app.exec_()


app = QApplication([])

app.aboutToQuit.connect(closeEvent)                  # +++

label = QLabel('QLabel: Hello World!')
label.show()
app.exec_()

【讨论】:

以上是关于PyQt5在执行示例代码后给出错误代码[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如果给出错误的参数,则中止程序,C++ [重复]

PyQt5 - 关闭应用程序 bec。 .value() 方法的错误[重复]

为啥这个javascript代码给出错误[重复]

错误代码:1062。重复条目 'PRIMARY'

较小的运算符在javascript代码中给出错误[重复]

剃刀视图没有给出编译时错误[重复]