在 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。