You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在QGraphicsView中添加图片?动态加载图片程序崩溃问题求解

问题原因
  • 你没有初始化self.scene属性,也没有给UI加载的gv(QGraphicsView组件)绑定关联的QGraphicsScene实例,调用self.scene.setSceneRect时属于访问未定义的空对象,触发空指针访问异常,直接导致程序崩溃,报错码0xC0000409就是Windows平台下这类内存访问错误的典型返回值。
  • 代码中出现的self.orig_gv也属于未定义属性,你的UI文件中QGraphicsView的id是gv,不存在orig_gv这个组件对象。
解决步骤
  1. 在类的初始化方法__init__中创建QGraphicsScene实例,绑定到self.scene,同时为self.gv设置关联的场景。
  2. 修正load方法中的错误属性引用,直接使用已初始化的self.scene操作场景元素。
修正后的完整代码
import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5 import uic
from PyQt5 import QtWidgets


class MyWin(QtWidgets.QMainWindow):
    def __init__(self):
        QtWidgets.QMainWindow.__init__(self)
        uic.loadUi("test.ui", self)
        # 新增:创建场景并绑定到QGraphicsView
        self.scene = QGraphicsScene()
        self.gv.setScene(self.scene)

        self.open.clicked.connect(self.load)

    def load(self):
        file_name, _ = QFileDialog.getOpenFileName(
            self, 'Open file', '.', 'Image Files (*.png *.jpg *.bmp)')
        if not file_name:
            return
        self.image_qt = QImage(file_name)

        pic = QGraphicsPixmapItem()
        pic.setPixmap(QPixmap.fromImage(self.image_qt))
        self.scene.setSceneRect(0, 0, 400, 400)
        # 修正:直接用self.scene添加元素
        self.scene.addItem(pic)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    dlgMain = MyWin()
    dlgMain.show()
    sys.exit(app.exec_())

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 17:24:02