属性动画QPropertyAnimation
作者:互联网
属性动画QPropertyAnimation
改变大小、颜色或位置是动画中的常见操作,而QPropertyAnimation类可以修改控件的属性值
大小改变动画:
1 import sys 2 from PyQt5.QtCore import QPropertyAnimation, QSize 3 from PyQt5.QtWidgets import QApplication, QWidget, QPushButton 4 5 class Demo(QWidget): 6 def __init__(self): 7 super(Demo, self).__init__() 8 self.resize(600, 600) 9 10 self.btn = QPushButton('Bigger', self) 11 self.btn.resize(100, 100) 12 13 self.animation = QPropertyAnimation(self.btn, b'size') # 实例化一个动画对象 14 #参数1 动画要操作的对象 15 #参数2 要改变的属性 注意:字节数组类型QByteArray size大小 16 self.animation.setDuration(10000) # 设置动画持续时间。单位毫秒 17 self.animation.setStartValue(QSize(100, 100)) # 动画开始时的大小 18 self.animation.setKeyValueAt(0.3, QSize(200, 200)) 19 #参数1 30%时间点 20 #参数2 大小 21 self.animation.setKeyValueAt(0.8, QSize(300, 300)) 22 23 self.animation.setEndValue(QSize(600, 600)) # 动画结束时的大小 24 #参数必须为QVariant类型(可以把QVariant理解为Qt中常见的数据类型),该类型包括int,float,double,QColor,QLine,QLineF,QPoint,QPointF,QRect,QRectF,QSize和QSizeF等 25 self.animation.start() # 动画开始 26 27 if __name__ == '__main__': 28 app = QApplication(sys.argv) 29 demo = Demo() 30 demo.show() 31 sys.exit(app.exec_())
位置改变动画:
1 import sys 2 from PyQt5.QtCore import QPropertyAnimation, QPoint 3 from PyQt5.QtWidgets import QApplication, QWidget, QPushButton 4 5 class Demo(QWidget): 6 def __init__(self): 7 super(Demo, self).__init__() 8 self.resize(600, 600) 9 10 self.btn = QPushButton('移动动画', self) 11 self.btn.resize(100, 100) 12 13 self.animation = QPropertyAnimation(self.btn, b'pos') # 实例化一个动画对象 14 #参数1 动画要操作的对象 15 #参数2 要改变的属性 注意:字节数组类型QByteArray pos位置 16 self.animation.setDuration(10000) # 设置动画持续时间。单位毫秒 17 self.animation.setStartValue(QPoint(0, 0)) # 动画开始时的位置 18 self.animation.setEndValue(QPoint(500, 500)) # 动画结束时的位置 19 self.animation.start() # 动画开始 20 21 if __name__ == '__main__': 22 app = QApplication(sys.argv) 23 demo = Demo() 24 demo.show() 25 sys.exit(app.exec_())
位置大小同时改变动画:
按钮还有个属性就是geometry,我们可以通过该属性同时改变按钮的大小和位置
1 import sys 2 from PyQt5.QtCore import QPropertyAnimation, QRect, QEasingCurve 3 from PyQt5.QtWidgets import QApplication, QWidget, QPushButton 4 5 6 class Demo(QWidget): 7 def __init__(self): 8 super(Demo, self).__init__() 9 self.resize(600, 600) 10 11 self.btn = QPushButton('Move', self) 12 self.btn.setGeometry(0, 0, 100, 100) 13 14 self.animation = QPropertyAnimation(self.btn, b'geometry') # 实例化一个动画对象 15 # 参数1 动画要操作的对象 16 # 参数2 要改变的属性 geometry位置和大小 17 self.animation.setDuration(5000) # 设置动画持续时间。单位毫秒 18 self.animation.setStartValue(QRect(0, 0, 100, 100)) #动画开始时的位置和大小 19 self.animation.setEndValue(QRect(300, 300, 300, 300)) #动画结束时的位置和大小 20 #self.animation.setEasingCurve(QEasingCurve.InBounce) #设置缓和曲线 21 self.animation.setLoopCount(-1) #设置循环次数 22 #-1 无限循环 23 #0 不循环 24 #正数 循环次数 25 self.animation.start() 26 27 if __name__ == '__main__': 28 app = QApplication(sys.argv) 29 demo = Demo() 30 demo.show() 31 sys.exit(app.exec_())
缓和曲线
QEasingCurve.Linear 直线(默认)
标签:__,动画,QPropertyAnimation,animation,100,btn,self,属性 来源: https://www.cnblogs.com/liming19680104/p/10422261.html