Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用QGraphicscene::addItem将QPixmap项添加到QGraphicscene_Python_Qt_Pyside_Qgraphicsview_Qgraphicsscene - Fatal编程技术网

Python 使用QGraphicscene::addItem将QPixmap项添加到QGraphicscene

Python 使用QGraphicscene::addItem将QPixmap项添加到QGraphicscene,python,qt,pyside,qgraphicsview,qgraphicsscene,Python,Qt,Pyside,Qgraphicsview,Qgraphicsscene,我正在尝试将图像添加到QGraphicsView/qgraphicscene,以便稍后我可以根据用户的输入在其上绘制简单的几何图形。我需要确保图像适合QGraphicsView,无论其纵横比如何。为此,我使用了QGraphicsView::fitInView 工作版本: 如果我使用 非工作版本: 但是,如果不是使用qgraphicscene::addPixmap,而是首先创建一个,然后使用qgraphicscene::addItem将其添加到场景中,我会得到一个segfault from PyS

我正在尝试将图像添加到
QGraphicsView
/
qgraphicscene
,以便稍后我可以根据用户的输入在其上绘制简单的几何图形。我需要确保图像适合
QGraphicsView
,无论其纵横比如何。为此,我使用了
QGraphicsView::fitInView

工作版本: 如果我使用

非工作版本: 但是,如果不是使用
qgraphicscene::addPixmap
,而是首先创建一个,然后使用
qgraphicscene::addItem
将其添加到场景中,我会得到一个segfault

from PySide import QtGui
import sys

app = QtGui.QApplication(sys.argv)
scn = QtGui.QGraphicsScene()
view = QtGui.QGraphicsView(scn)

pixmap = QtGui.QPixmap("image.png")
pixItem = QtGui.QGraphicsPixmapItem(pixmap)
gfxPixItem = scn.addItem(pixItem)

view.fitInView(gfxPixItem) # Crashes, see below for call stack in OSX
view.show()

sys.exit(app.exec_())
我在OSX和Linux上尝试了这个方法,得到了相同的结果。 我做错了什么

我需要第二种方法的原因是,我可以将
QGraphicsPixmapItem
子类重新实现
mouseEvent
函数


这是崩溃的线程:

0   QtGui               0x000000011073bb52 QGraphicsItem::isClipped() const + 4
1   QtGui               0x0000000110779ad6 QGraphicsView::fitInView(QGraphicsItem const*, Qt::AspectRatioMode) + 32
2   QtGui.so            0x000000010f72333d Sbk_QGraphicsViewFunc_fitInView + 1153
3   org.python.python   0x000000010f2895a9 PyEval_EvalFrameEx + 9244
4   org.python.python   0x000000010f287147 PyEval_EvalCodeEx + 1934
5   org.python.python   0x000000010f2869b3 PyEval_EvalCode + 54
6   org.python.python   0x000000010f2c2c70 0x10f270000 + 339056
7   org.python.python   0x000000010f2c2d3c PyRun_FileExFlags + 165
8   org.python.python   0x000000010f2c2726 PyRun_SimpleFileExFlags + 410
9   org.python.python   0x000000010f2e6e27 Py_Main + 2715
10  libdyld.dylib       0x00007fff861b47e1 start + 1

qgraphicscene::addItem(QGraphicsItem*item)
返回
void
,因此
gfxpixiitem
为无。当您尝试调用
view.fitInView(None)
时,会导致崩溃

更正代码:

pixmap = QtGui.QPixmap("image.png")
pixItem = QtGui.QGraphicsPixmapItem(pixmap)
scn.addItem(pixItem)
view.fitInView(pixItem)

我还编辑了原始问题,以处理错位的
ret
变量。
pixmap = QtGui.QPixmap("image.png")
pixItem = QtGui.QGraphicsPixmapItem(pixmap)
scn.addItem(pixItem)
view.fitInView(pixItem)