PyQt5实例化QPixmap触发-1073740791(0xC0000409)报错如何解决
问题根本原因
触发exit code -1073740791 (0xC0000409)错误的核心原因有两个:
- PyQt版本冲突:你的conda虚拟环境中同时存在两个来源、版本不匹配的PyQt依赖:conda源自带的5.9.2版本,和你单独通过pip安装的5.15.4版本。两个版本的Qt底层动态库、Python绑定接口不兼容,调用GUI基础组件时会触发栈缓冲区溢出,对应错误码就是
0xC0000409。 - 调用逻辑不符合Qt规范:Qt要求所有GUI类(QPixmap、QIcon都属于GUI组件范畴)的实例化操作,必须在QApplication对象初始化完成之后执行,你直接导入后就实例化QPixmap的操作不符合Qt的运行要求。
解决方案
按照以下步骤操作即可解决:
- 第一步:清理环境中重复的PyQt依赖,避免版本冲突
依次执行以下命令卸载所有PyQt、Qt相关包:
确认卸载完成后,选择单一渠道安装固定版本的PyQt:pip uninstall -y PyQt5 PyQt5-sip PyQt5-Qt5 conda remove -y pyqt qt- 若偏好conda源,执行:
conda install pyqt=5.15.4 - 若偏好pip源,执行:
pip install PyQt5==5.15.4
不要混装两个渠道的PyQt包,避免再次出现版本兼容问题。
- 若偏好conda源,执行:
- 第二步:调整代码逻辑,遵循Qt的初始化规范
正确的测试代码示例如下:import sys from PyQt5.QtWidgets import QApplication from PyQt5.QtGui import QPixmap, QIcon if __name__ == '__main__': # 必须优先初始化QApplication实例 app = QApplication(sys.argv) # 再实例化GUI组件 test_pixmap = QPixmap() print("QPixmap创建成功,是否为空:", test_pixmap.isNull()) test_icon = QIcon() print("QIcon创建成功,是否为空:", test_icon.isNull())
内容的提问来源于stack exchange,提问作者deponovo
相关产品推荐
相关产品推荐

