pyqt动画效果放大与缩小
- QPropertyAnimation介绍
- 放大与缩小效果
- 代码
QPropertyAnimation介绍
QPropertyAnimation 是 PyQt中的一个类,它用于对 Qt 对象的属性进行动画处理。通过使用 QPropertyAnimation,你可以平滑地改变一个对象的属性值,例如窗口的位置、大小、颜色等。
放大与缩小效果
放大效果:
缩小效果:
代码
from PyQt5.QtWidgets import QWidget, QApplication, QFrame, QPushButton
from PyQt5.QtCore import QRect, QPropertyAnimation
from PyQt5.QtGui import QColor class Example(QWidget): """ 一个示例类,继承自QWidget,用于展示一个简单的动画效果。 """ def __init__(self): """ 构造函数,初始化QWidget并调用initUI方法。 """ super().__init__() # 调用父类QWidget的构造函数 self.initUI() # 初始化UI def initUI(self): """ 初始化UI,包括按钮、框架以及设置窗口的基本属性。 """ self.button = QPushButton("Start", self) # 创建一个QPushButton对象,文本为"Start",父对象为self self.button.clicked.connect(self.doAnim) # 将按钮的clicked信号连接到doAnim槽函数 self.button.move(30, 30) # 移动按钮到指定位置 self.frame = QFrame(self) # 创建一个QFrame对象,父对象为self self.frame.setFrameStyle(QFrame.Panel | QFrame.Raised) # 设置框架的样式为面板且凸起 self.frame.setStyleSheet("QFrame { background-color: blue; }") # 设置框架的背景色为蓝色 self.frame.setGeometry(QRect(150, 30, 100, 100)) # 设置框架的初始位置和大小 self.setGeometry(300, 300, 380, 300) # 设置窗口的初始位置和大小 self.setWindowTitle('Animation') # 设置窗口的标题为"Animation" self.show() # 显示窗口 def doAnim(self): """ 定义动画效果,包括创建动画对象、设置动画参数以及启动动画。 """ self.anim = QPropertyAnimation(self.frame, b"geometry") # 创建一个QPropertyAnimation对象,用于对self.frame的geometry属性进行动画处理 self.anim.setDuration(1000) # 设置动画的持续时间为1000毫秒(1秒) self.anim.setStartValue(QRect(150, 30, 100, 100)) # 设置动画开始时的值为初始位置和大小 # 注释了放大的代码,改为缩小 # self.anim.setEndValue(QRect(150, 30, 200, 200)) # 如果要放大,可以取消注释这行代码,注释下面的缩小代码 self.anim.setEndValue(QRect(150, 30, 50, 50)) # 设置动画结束时的值为缩小后的位置和大小 self.anim.start() # 启动动画 if __name__ == "__main__": app = QApplication([]) # 创建一个QApplication对象,作为整个应用程序的入口 ex = Example() # 创建一个Example对象,即主窗口 ex.show() # 显示主窗口 app.exec_() # 进入应用程序的主事件循环,等待用户操作或程序结束