PyQt,Qt: QGraphicsItemAniamtion 的问题
我有下面这两段代码,但是只有第一段正常运行,我绞尽脑汁也想不出是为什么?求大神指点
这两端代码是关于QGraphicsItemAniamtion的应用,但是只有第一段会有动画效果,第二段就没有,也就是第二段代码中的ball 一直都不动。(第一段是文档中的一个例子,第二段是我自己改写的)
我个人觉得这两端代码几乎 等价 啊。。。还求大神指点
#! /usr/bin/python # -*- coding:utf8 -*- from PyQt4 import QtCore, QtGui from PyQt4.QtCore import * from PyQt4.QtGui import * import sys app = QApplication(sys.argv) ball = QGraphicsEllipseItem(0, 0, 20, 20) timer = QTimeLine(5000) timer.setFrameRange(0, 100) animation = QGraphicsItemAnimation() animation.setItem(ball) animation.setTimeLine(timer) for i in range(200): animation.setPosAt(i / 200.0, QPointF(i, i)) scene = QGraphicsScene() scene.setSceneRect(0, 0, 250, 250); scene.addItem(ball) view = QGraphicsView(scene) view.show() timer.start() sys.exit(app.exec_())
#! /usr/bin/python # -*- coding:utf8 -*- from PyQt4 import QtCore, QtGui from PyQt4.QtCore import * from PyQt4.QtGui import * import sys class MainScene(QGraphicsScene): def __init__(self, parent=None): super(MainScene, self).__init__(parent) self.setSceneRect(0, 0, 250, 250); self.runPerson() def runPerson(self): print "person run" ball = QGraphicsEllipseItem(0, 0, 20, 20) timer = QTimeLine(50000) timer.setFrameRange(0,100) animation = QGraphicsItemAnimation() animation.setItem(ball) animation.setTimeLine(timer) for i in range(200): animation.setPosAt(i/200.0, QPointF(i,i)) self.addItem(ball) timer.start() print "animation should started" class MainView(QGraphicsView): def __init__(self, parent=None): super(MainView, self).__init__(parent) self.scene = MainScene(self) self.setScene(self.scene) if __name__ == "__main__": app = QApplication(sys.argv) mv = MainView() mv.show() sys.exit(app.exec_())
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
animation作为局部变量在函数退出后销掉了,用self.animation
问题就是出在这个地方
你这个在我的机子上,圆是会动的啊...你前面几行的import之类的加上去 我用的py2.7.5
回复
难道是我 ubuntu的原因么,@_@ 前面的import只是为了让代码看起来短一点,所以没贴上来. 谢谢了,
回复
的确会动,只是50000会动的非常慢.....我也是醉了
I writ it again in this way, but it still notwork, either.
还有一个问题,animation作为局部变量在函数退出后销掉了,用self.animation
回复
I writ it again in this way, but it still not work . can you correct it for me ? thanks
self.scene 把 scene函数覆盖掉了!