Python 如何设置按钮从各个方向延伸的动画?
当我在pyqt5中为按钮制作动画时。当我点击按钮时,按钮仅从两个方向延伸,就像第一个图像一样,我希望按钮从所有四个方向延伸,就像第二个图像一样 第一: 第二:Python 如何设置按钮从各个方向延伸的动画?,python,pyqt,pyqt5,Python,Pyqt,Pyqt5,当我在pyqt5中为按钮制作动画时。当我点击按钮时,按钮仅从两个方向延伸,就像第一个图像一样,我希望按钮从所有四个方向延伸,就像第二个图像一样 第一: 第二: 您只更改大小而不更改位置,因此您可以选择以下选项: 使用valueChanged信号获取当前大小并重新计算位置 再创建一个动画,该动画根据大小更改位置,并与其他动画一起使用 在几何体上设置动画,而不是在大小上设置动画 在这种情况下,我将显示第三个选项: def one(self): rect_start=QRect(self.b.
您只更改大小而不更改位置,因此您可以选择以下选项:
- 使用valueChanged信号获取当前大小并重新计算位置
- 再创建一个动画,该动画根据大小更改位置,并与其他动画一起使用
- 在几何体上设置动画,而不是在大小上设置动画
def one(self):
rect_start=QRect(self.b.geometry())
rect_end=QRect(0,0,100,100)
rect\u end.moveCenter(rect\u start.center())
an1=QPropertyAnimation(self.b,b“几何体”,self)
an1.设置起始值(rect_start)
an1.setEndValue(rect_end)
an1.设置持续时间(200)
an1.start(QAbstractAnimation.DeleteWhenStopped)
非常感谢。。。您能解释一下为什么使用(QAbstractAnimation.DeleteWhenStopped)作为start()的参数吗?
import sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class main(QMainWindow):
def __init__(self):
super().__init__()
self.setGeometry(100, 100, 500, 500)
self.b = QPushButton('click', self)
self.b.resize(50, 50)
self.b.move(150, 150)
self.b.clicked.connect(self.one)
def one(self):
self.an1 = QPropertyAnimation(self.b, b'size')
self.an1.setStartValue(self.b.size())
self.an1.setEndValue(QSize(100, 100))
self.an1.setDuration(200)
self.an1.start()
if __name__ == "__main__":
app = QApplication(sys.argv)
mai = main()
mai.show()
app.exec()