Python PyQT4和平铺动画

Python PyQT4和平铺动画,python,animation,pyqt4,tiles,Python,Animation,Pyqt4,Tiles,我刚刚开始学习PyQT4 如何定义一个类,其实例将是动画图像?我有一些png文件,所以我希望该对象在一个循环中一刻渲染一个这样的文件,另一刻渲染另一个文件。我应该使用QMovie或Qt动画框架,还是什么?谢谢 这应该对你有帮助。您应该使用QMovie 事实上,我在家里找到了我更想要的东西 我用了下面的方法: class PowerUp(QtGui.QGraphicsRectItem): def __init__(self): QtGui.QGraphicsRectItem

我刚刚开始学习PyQT4


如何定义一个类,其实例将是动画图像?我有一些png文件,所以我希望该对象在一个循环中一刻渲染一个这样的文件,另一刻渲染另一个文件。我应该使用QMovie或Qt动画框架,还是什么?谢谢

这应该对你有帮助。您应该使用
QMovie

事实上,我在家里找到了我更想要的东西

我用了下面的方法:

class PowerUp(QtGui.QGraphicsRectItem):
    def __init__(self):
        QtGui.QGraphicsRectItem.__init__(self)
        self.images = ['data/images/objects/bonus_block/full-0.png',
                       'data/images/objects/bonus_block/full-1.png',
                       'data/images/objects/bonus_block/full-2.png',
                       'data/images/objects/bonus_block/full-3.png',
                       'data/images/objects/bonus_block/full-4.png']
        self.image = self.images[0]
        self.current = 0
        self.position()
        self.timer = QtCore.QTimer()
        self.timer.timeout.connect(self.animation_step)
        self.timer.start(175)
        #random.choice([slide(), ghost()])

    def position(self):
        self.pos_x = random.randint(-300, 300)
        self.pos_y = random.randint(-200, 200)

    def boundingRect(self):
        return QtCore.QRectF(0, 0, 32, 32)

    def paint(self, painter, option, widget):
        painter.setBrush(QtGui.QBrush(self.image))
        painter.setPen(QtGui.QPen(QtCore.Qt.NoPen))
        painter.drawRect(0, 0, 32, 32)
        self.setPos(self.pos_x, self.pos_y)

    def animation_step(self):
        self.image = QtGui.QPixmap(self.images[self.current])
        self.current += 1
        if self.current == len(self.images):
            self.current = 0

谢谢事实上,我不想使用GIF。无论如何,我会更深入地了解QMovie。
class PowerUp(QtGui.QGraphicsRectItem):
    def __init__(self):
        QtGui.QGraphicsRectItem.__init__(self)
        self.images = ['data/images/objects/bonus_block/full-0.png',
                       'data/images/objects/bonus_block/full-1.png',
                       'data/images/objects/bonus_block/full-2.png',
                       'data/images/objects/bonus_block/full-3.png',
                       'data/images/objects/bonus_block/full-4.png']
        self.image = self.images[0]
        self.current = 0
        self.position()
        self.timer = QtCore.QTimer()
        self.timer.timeout.connect(self.animation_step)
        self.timer.start(175)
        #random.choice([slide(), ghost()])

    def position(self):
        self.pos_x = random.randint(-300, 300)
        self.pos_y = random.randint(-200, 200)

    def boundingRect(self):
        return QtCore.QRectF(0, 0, 32, 32)

    def paint(self, painter, option, widget):
        painter.setBrush(QtGui.QBrush(self.image))
        painter.setPen(QtGui.QPen(QtCore.Qt.NoPen))
        painter.drawRect(0, 0, 32, 32)
        self.setPos(self.pos_x, self.pos_y)

    def animation_step(self):
        self.image = QtGui.QPixmap(self.images[self.current])
        self.current += 1
        if self.current == len(self.images):
            self.current = 0