Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何设置按钮从各个方向延伸的动画?_Python_Pyqt_Pyqt5 - Fatal编程技术网

Python 如何设置按钮从各个方向延伸的动画?

Python 如何设置按钮从各个方向延伸的动画?,python,pyqt,pyqt5,Python,Pyqt,Pyqt5,当我在pyqt5中为按钮制作动画时。当我点击按钮时,按钮仅从两个方向延伸,就像第一个图像一样,我希望按钮从所有四个方向延伸,就像第二个图像一样 第一: 第二: 您只更改大小而不更改位置,因此您可以选择以下选项: 使用valueChanged信号获取当前大小并重新计算位置 再创建一个动画,该动画根据大小更改位置,并与其他动画一起使用 在几何体上设置动画,而不是在大小上设置动画 在这种情况下,我将显示第三个选项: def one(self): rect_start=QRect(self.b.

当我在pyqt5中为按钮制作动画时。当我点击按钮时,按钮仅从两个方向延伸,就像第一个图像一样,我希望按钮从所有四个方向延伸,就像第二个图像一样

第一:

第二:


您只更改大小而不更改位置,因此您可以选择以下选项:

  • 使用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()