import functools
from code.ghosts import Ghosts
class Pacman(QtGui.QGraphicsPixmapItem):
def __init__(self):
super(Pacman, self).__init__()
self.setPixmap(QtGui.QPixmap("pacman.png"))
def game_continue(self):
objects = list(self.scene().items())
for i in range(objects.__len__()):
if type(objects[i]) is Ghosts:
self.scene().removeItem(objects[i])
func = functools.partial(self.show_again, objects)
QtCore.QTimer.singleShot(100, func)
def show_again(self, objects):
for object_ in objects:
if type(object_) is Ghosts:
self.scene().addItem(object_)
它告诉我NoneType对象没有属性addItem(它是关于代码最后一行中的self.scene())。为什么它会识别self.scene.removeItem()并执行它,但是没有addItem?
答案 0 :(得分:1)
QGraphicsScene QGraphicsItem.scene(self)
返回项目的当前场景,如果未存储项目,则返回0 在场景中。
http://pyqt.sourceforge.net/Docs/PyQt4/qgraphicsitem.html#scene
如果你先调用removeItem(),那么在调用addItem()时它将返回None。您始终可以在构造函数方法中将QGraphicsScene实例存储在项目本身中。这样,项目是否属于场景无关紧要。