PyQt5在执行示例代码后给出错误代码

时间:2019-07-10 16:43:51

标签: python pyqt

执行以下代码后

# ===

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)

我在Python 3.7版本2019.1.3和Windows 10中使用PyQt5PyCharm。我已经重新安装了程序包,重新安装了Pycharm,但无济于事。

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

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

关于为什么发生这种情况的任何其他信息都将是一件好事:)因为我不明白那部分。 关于“只是不那样做”的解决方案,不会帮助我理解问题。预先感谢

1 个答案:

答案 0 :(得分:0)

尝试一下:

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_()

enter image description here