pyqt5 按钮旋转动画
时间: 2023-10-12 13:05:59 浏览: 165
你可以使用QPropertyAnimation来实现按钮旋转动画。下面是一个简单的示例代码:
```python
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
from PyQt5.QtCore import QPropertyAnimation, pyqtProperty, QPointF, QRectF, QEasingCurve
from PyQt5.QtGui import QPainter
class RotatingButton(QPushButton):
def __init__(self, parent=None):
super().__init__(parent)
self._angle = 0
# 定义角度属性
def angle(self):
return self._angle
def setAngle(self, angle):
self._angle = angle
self.update()
angle = pyqtProperty(float, angle, setAngle)
# 绘制按钮
def paintEvent(self, event):
painter = QPainter(self)
painter.translate(self.rect().center())
painter.rotate(self._angle)
painter.translate(-self.rect().center())
super().paintEvent(event)
# 开始旋转动画
def startRotation(self):
anim = QPropertyAnimation(self, b"angle")
anim.setStartValue(0.0)
anim.setEndValue(360.0)
anim.setDuration(1000)
anim.setEasingCurve(QEasingCurve.InOutQuad)
anim.start()
if __name__ == '__main__':
app = QApplication([])
w = QWidget()
btn = RotatingButton("Rotate Me", w)
btn.setGeometry(QRectF(50, 50, 100, 50))
btn.startRotation()
w.show()
app.exec_()
```
这个示例代码创建了一个RotatingButton类,这个类继承自QPushButton并添加了一个角度属性。在按钮的paintEvent中,我们将按钮的绘制坐标系旋转了一定角度,然后调用了父类QPushButton的paintEvent方法。在开始旋转动画时,我们使用QPropertyAnimation来改变按钮的角度属性,并设置了动画的开始值、结束值、持续时间和缓动曲线。最后,我们创建了一个RotatingButton实例并调用了startRotation方法来开始旋转动画。
你可以根据自己的需求修改这个示例代码。
阅读全文