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_())
复制代码

 

 

 

 

 

天子骄龙

 

posted @   天子骄龙  阅读(451)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示