阅读量:0
在 PyQt5 中,可以使用 QPropertyAnimation 类来为 QPushButton 添加动画效果
import sys from PyQt5.QtCore import QPropertyAnimation, QEasingCurve from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton class AnimatedButton(QPushButton): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.animation = QPropertyAnimation(self, b"minimumWidth") self.animation.setDuration(1000) # 设置动画时长(毫秒) self.animation.setStartValue(50) # 设置起始宽度 self.animation.setEndValue(200) # 设置结束宽度 self.animation.setEasingCurve(QEasingCurve.OutBounce) # 设置缓动曲线 self.animation.finished.connect(self.on_animation_finished) def on_animation_finished(self): self.setMinimumWidth(50) # 将按钮宽度重置为初始值 def mousePressEvent(self, event): self.animation.start() # 开始动画 super().mousePressEvent(event) app = QApplication(sys.argv) window = QWidget() layout = QVBoxLayout(window) animated_button = AnimatedButton("点击我") layout.addWidget(animated_button) window.show() sys.exit(app.exec_())
在这个示例中,我们创建了一个名为 AnimatedButton
的自定义 QPushButton 类。当用户点击按钮时,会触发一个动画效果,使按钮的宽度从 50 像素增加到 200 像素,然后回弹到初始宽度。动画时长为 1000 毫秒,缓动曲线设置为 QEasingCurve.OutBounce。
要实现其他动画效果,可以修改 QPropertyAnimation
的参数,例如更改属性、持续时间、起始值和结束值等。还可以尝试其他缓动曲线,如 QEasingCurve.InOutElastic 或 QEasingCurve.InOutBack。