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_())
天子骄龙