from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QLabel
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtCore import QPropertyAnimation,QPoint,QSize,QRect,QEasingCurve
from PyQt5.QtGui import QPixmap,QPalette,QFont
class win(QWidget):
def __init__(self):
super().__init__()
self.resize(400,400)
self.setWindowTitle('动画学习')
label = QLabel(self)
label.resize(200, 120)
label.move(150,0)
#label.setFont(QFont("Roman times",30))
#label.setStyleSheet("font:20pt '楷体';border-width: 1px;border-style: solid;border-color: rgb(255, 0, 0);color: yellow") #############设置边框
label.setStyleSheet(
"font:20pt '楷体';color: yellow") #############设置边框
label.setText("中国加油\n武汉加油\n中国必胜")
#ani=QPropertyAnimation(btn,b'pos',self) #创建动画对象
ani = QPropertyAnimation(self) #创建动画对象
#ani.setTargetObject(btn) #设置动画目标对象
ani.setTargetObject(label)
#ani.setTargetObject(self)
ani.setPropertyName(b'pos') #设置动画属性
#注意:字节类型
#pos---位置动画---QPoint
#size---大小动画---QSize
#geometry----位置+大小动画----QRect
#windowOpacity---窗口的透明度(0.0是透明的 1.0是不透明)---好像只适合顶层窗口
#ani.setStartValue(QPoint(0,0)) #设置开始位置---按钮的左上角位置
#ani.setEndValue(QPoint(300,300)) #设置结束位置
ani.setStartValue(QPoint(150,0)) #设置开始位置---按钮的左上角位置
ani.setEndValue(QPoint(150,400)) #设置结束位置
ani.setDuration(8000) #设置动画单次时长---单位毫秒
ani.setEasingCurve(QEasingCurve.InQuad) #设置动画的节奏
#取值 https://doc.qt.io/qt-5/qeasingcurve.html#Type-enum
ani.start() #动画开始---非阻塞
if __name__=='__main__':
app=QApplication(sys.argv)
w=win()
w.setObjectName("MainWindow")
w.setStyleSheet("#MainWindow{background-color: red}")
w.show()
sys.exit(app.exec_())
=========================================
来源:https://www.cnblogs.com/gisoracle/p/12289301.html