用一个矩形演示QPropertyAnimation
时间: 2024-02-17 21:04:56 浏览: 76
好的,我可以用一个矩形进行演示。首先,我们需要创建一个QWidget类的子类,并在其paintEvent()函数中绘制一个矩形:
```python
class MyWidget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setGeometry(100, 100, 300, 200)
self.pos_x = 0
self.pos_y = 0
def paintEvent(self, event):
painter = QPainter(self)
painter.fillRect(QRect(self.pos_x, self.pos_y, 50, 50), QColor(255, 0, 0))
```
在这个类中,我们定义了一个矩形的左上角坐标pos_x和pos_y,并在paintEvent()函数中使用QPainter绘制出来。接下来,我们可以使用QPropertyAnimation对其位置进行动画处理。我们在MyWidget类中添加一个按钮,点击按钮时启动动画,代码如下:
```python
class MyWidget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setGeometry(100, 100, 300, 200)
self.pos_x = 0
self.pos_y = 0
# 添加按钮并连接槽函数
self.button = QPushButton(self)
self.button.setText("Start Animation")
self.button.clicked.connect(self.start_animation)
def paintEvent(self, event):
painter = QPainter(self)
painter.fillRect(QRect(self.pos_x, self.pos_y, 50, 50), QColor(255, 0, 0))
def start_animation(self):
animation = QPropertyAnimation(self, b"pos")
animation.setDuration(1000)
animation.setStartValue(QPoint(0, 0))
animation.setEndValue(QPoint(250, 150))
animation.start()
```
在start_animation()函数中,我们使用QPropertyAnimation对MyWidget的位置属性进行动画处理。动画的起始值为(0,0),结束值为(250,150),动画时间为1秒。在按钮点击事件中启动该动画。
运行程序,点击按钮即可看到矩形在窗口中移动的动画效果。
阅读全文