为什么 PyQt5 QPixmap 会崩溃 python?

Why does PyQt5 QPixmap crash python?

当我尝试将此字符串列表转换为像素图时,它崩溃了 python。 有什么解决这个问题的建议吗?

openIcon = [
    '16 13 5 1',
    '. c #040404',
    '# c #808304',
    'a c None',
    'b c #f3f704',
    'c c #f3f7f3',
    'aaaaaaaaa...aaaa',
    'aaaaaaaa.aaa.a.a',
    'aaaaaaaaaaaaa..a',
    'a...aaaaaaaa...a',
    '.bcb.......aaaaa',
    '.cbcbcbcbc.aaaaa',
    '.bcbcbcbcb.aaaaa',
    '.cbcb...........',
    '.bcb.#########.a',
    '.cb.#########.aa',
    '.b.#########.aaa',
    '..#########.aaaa',
    '...........aaaaa'
    ]

if __name__ == "__main__":
    from PyQt5.QtGui import QPixmap
    openIcon_p = QPixmap(openIcon)
    openIcon_p.save("openIcon.png")

使用:

Python 3.7.4(tags/v3.7.4:e09359112e,2019 年 7 月 8 日,20:34:20)Win32 上的 [MSC v.1916 64 位 (AMD64)]

PyQt5==5.13.0

运行 从控制台查看错误信息的代码。 在 QPixmap:

之前你需要一个 QApplication
from PyQt5 import QtWidgets, QtGui
import sys

openIcon = [
    '16 13 5 1',
    '. c #040404',
    '# c #808304',
    'a c None',
    'b c #f3f704',
    'c c #f3f7f3',
    'aaaaaaaaa...aaaa',
    'aaaaaaaa.aaa.a.a',
    'aaaaaaaaaaaaa..a',
    'a...aaaaaaaa...a',
    '.bcb.......aaaaa',
    '.cbcbcbcbc.aaaaa',
    '.bcbcbcbcb.aaaaa',
    '.cbcb...........',
    '.bcb.#########.a',
    '.cb.#########.aa',
    '.b.#########.aaa',
    '..#########.aaaa',
    '...........aaaaa'
    ]

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv) 
    openIcon_p = QtGui.QPixmap(openIcon)
    openIcon_p.save("openIcon.png")

编辑:如果没有添加行,代码会给出以下错误消息:

QPixmap::fromImageInPlace: QPixmap cannot be created without a QGuiApplication
QPixmap: Must construct a QGuiApplication before a QPixmap 

有关解释,请参阅 Qt-Documentation。还有一个描述何时使用 QtWidgets.QApplication 以及何时使用 QtGui.QGuiApplication 正如 eyllanesc

评论的那样