【发布时间】:2026-01-18 19:35:01
【问题描述】:
我正在使用 Qt 的图形视图框架来显示大量图像,并使用 PyQt4 和 Python 2.7 实现它。我实例化了许多 QPixmapItem 对象并将它们添加到我的 QGraphicsScene。在我退出应用程序之前,一切都按照我的预期运行,并且程序崩溃而不是正常退出。
class ImgDisplay(QtGui.QWidget):
NUM_ITEMS = 5000
VIEW_WIDTH,VIEW_HEIGHT = 400, 400
def __init__(self):
super(ImgDisplay, self).__init__()
self.scene = QtGui.QGraphicsScene(QtCore.QRectF(0,0,ImgDisplay.VIEW_WIDTH,ImgDisplay.VIEW_HEIGHT))
self.view = QtGui.QGraphicsView(self.scene)
self.view.setParent(self)
#Load the texture
self.texture = QtGui.QPixmap('image.png')
self.populateScene()
def populateScene(self):
for i in range(0, ImgDisplay.NUM_ITEMS-1):
item = QtGui.QGraphicsPixmapItem(self.texture)
self.scene.addItem(item)
我在想我正在创建的所有 PixMapItems 都没有被正确清理,或者我可能需要释放我加载的纹理(似乎没有释放它的方法,所以我假设它发生在后台)。
我尝试在析构函数中调用 self.scene.clear 来删除 PixmapItems,但没有帮助。
关于如何解决此问题的任何建议?
*我知道发布的代码只是将图像全部放在彼此之上,我的实际程序为它们分配随机位置和旋转,但我想将其减少到最小的问题。
【问题讨论】:
标签: python crash pyqt qgraphicsitem qgraphicsscene