pyqt5-动画组QAnimationGroup

from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QLabel
import sys
from PyQt5.QtCore import QPropertyAnimation,QPoint,QParallelAnimationGroup,QSequentialAnimationGroup

class win(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(400,400)
        self.setWindowTitle('动画学习')
        btn=QPushButton('按钮',self)
        btn.clicked.connect(self.AA)
        btn.move(150,350)
        lab1=QLabel('动画1',self)
        lab1.setStyleSheet('background-color:yellow')
        lab2 = QLabel('动画2', self)
        lab2.setStyleSheet('background-color:red')
        lab2.move(350,0)
        lab3 = QLabel('动画3', self)
        lab3.setStyleSheet('background-color:blue')
        lab3.move(350,350)
        ani1 = QPropertyAnimation(self)
        ani2 = QPropertyAnimation(self)
        ani3 = QPropertyAnimation(self)
        ani1.setTargetObject(lab1)
        ani2.setTargetObject(lab2)
        ani3.setTargetObject(lab3)
        ani1.setPropertyName(b'pos')
        ani2.setPropertyName(b'pos')
        ani3.setPropertyName(b'pos')
        ani1.setStartValue(QPoint(0, 0))
        ani2.setStartValue(QPoint(350, 0))
        ani3.setStartValue(QPoint(350, 350))
        ani1.setEndValue(QPoint(350, 0))
        ani2.setEndValue(QPoint(350, 350))
        ani3.setEndValue(QPoint(350, 0))
        ani1.setDuration(5000)
        ani2.setDuration(5000)
        ani3.setDuration(5000)


        #pani=QParallelAnimationGroup(self)  #创建并行动画组
        #并行动画组就是组内的动画同时执行
        pani = QSequentialAnimationGroup(self)   #创建串行动画组
        #串行动画组就是组内动画按照顺序一个一个执行
        self.pani=pani
        pani.addAnimation(ani1)   #往动画组里添加动画
        #pani.addPause(5000)  #添加暂停时间----并行动画没有这个指令
        #currentAnimation() -> QAbstractAnimation----并行动画没有这个指令
        pani.addAnimation(ani2)
        pani.insertAnimation(1,ani3)  #插入动画
        #参数1  序号

        #removeAnimation(QAbstractAnimation animation)    移除动画
        #animationAt(int index) -> QAbstractAnimation    获取动画
        #takeAnimation(int index) -> QAbstractAnimation   获取并移除
        #animationCount() -> int   动画个数
        #clear()    清空动画

        pani.start()  #启动动画组

    def AA(self):
        self.pani.pause()   #暂停动画组所有动画
        #其它指令看属性动画

if __name__=='__main__':
    app=QApplication(sys.argv)
    w=win()
    w.show()
    sys.exit(app.exec_())

天子骄龙

原文地址:https://www.cnblogs.com/liming19680104/p/11281967.html