mam*_*bro 1 python pyqt qgraphicsitem
如何创建一个扩展QGraphicsItem的类来定义一种新的Item?
我正试图这样做
#!/usr/bin/python
import sys
from PyQt4 import QtGui
class Node(QtGui.QGraphicsItem):
def __init__(self, parent = 0):
self.setFlag(QtGui.QGraphicsItem.ItemIsMovable)
app = QtGui.QApplication(sys.argv)
scene = QtGui.QGraphicsScene()
scene.addText("test")
scene.addItem(Node())
view = QtGui.QGraphicsView(scene)
view.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误
Traceback (most recent call last):
File "primo.py", line 15, in <module>
scene.addItem(Node())
File "primo.py", line 8, in __init__
self.setFlag(QtGui.QGraphicsItem.ItemIsMovable)
RuntimeError: underlying C/C++ object has been deleted
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我不能在Node 的init方法中调用QGraphicsItem构造函数,因为QGraphicsItem它是一个抽象类
解决方案就是这样
#!/usr/bin/python
import sys
from PyQt4 import QtGui
class Node(QtGui.QGraphicsItem):
def __init__(self, parent = None):
QtGui.QGraphicsItem.__init__(self,parent)
self.setFlag(QtGui.QGraphicsItem.ItemIsMovable)
app = QtGui.QApplication(sys.argv)
scene = QtGui.QGraphicsScene()
scene.addText("test")
scene.addItem(Node())
view = QtGui.QGraphicsView(scene)
view.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)