Python 如何在';QPropertyAnimation';在pyqt5中?
我成功地为我的小部件创建了一个动画,但我无法设置动画的方向。默认情况下,qwid1小部件扩展到右方向,我想将动画的方向设置为左方向,如下所示Python 如何在';QPropertyAnimation';在pyqt5中?,python,pyqt,pyqt5,Python,Pyqt,Pyqt5,我成功地为我的小部件创建了一个动画,但我无法设置动画的方向。默认情况下,qwid1小部件扩展到右方向,我想将动画的方向设置为左方向,如下所示 如果您分析初始和最终QRect,问题很明显: 首字母:200200600700 决赛:200、60、300、400 解决方案是构建最终的QRect,使“左”比另一个小,而其他的保持不变 def展开(自): an=QPropertyAnimation(self.qwid1,b“几何体”,self) ri=QRect(self.qwid1.geometry
如果您分析初始和最终QRect,问题很明显:
- 首字母:200200600700
- 决赛:200、60、300、400
def展开(自):
an=QPropertyAnimation(self.qwid1,b“几何体”,self)
ri=QRect(self.qwid1.geometry())
rf=ri.调整(-100,0,0,0)
a.设置起始值(ri)
一个.setEndValue(rf)
设置持续时间(500)
an.start(QAbstractAnimation.DeleteWhenStopped)
如果您分析初始和最终QRect,问题很明显:
- 首字母:200200600700
- 决赛:200、60、300、400
def展开(自):
an=QPropertyAnimation(self.qwid1,b“几何体”,self)
ri=QRect(self.qwid1.geometry())
rf=ri.调整(-100,0,0,0)
a.设置起始值(ri)
一个.setEndValue(rf)
设置持续时间(500)
an.start(QAbstractAnimation.DeleteWhenStopped)
谢谢@eyllanesc。。。我想如果我把“x”设为任何负数,它就会消失。。。您能告诉我为什么将(QAbstractAnimation.DeleteWhenStopped)作为argument@RoomDroid1)我没有给“x”加任何负数,建议您打印rf
。2) 阅读文档:,请在提问之前进行调查。@RoomDroid我强调:我不会回答用户没有显示任何调查的问题,因此如果您看到其他评论而没有回答,您已经知道可能的原因。谢谢@eyllanesc。。。我想如果我把“x”设为任何负数,它就会消失。。。您能告诉我为什么将(QAbstractAnimation.DeleteWhenStopped)作为argument@RoomDroid1)我没有给“x”加任何负数,建议您打印rf
。2) 阅读文档:,请在提问之前进行调查。@RoomDroid我强调:我不会回答用户没有显示任何调查的问题,因此如果您看到其他评论而没有回答,您已经知道可能的原因。
import sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
class test(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(200, 200, 600, 700)
self.b = QPushButton('expand', self)
self.b.clicked.connect(self.expand)
self.qwid1 = QWidget(self)
self.qwid1.setGeometry(200, 60, 200, 400)
self.qwid1.setStyleSheet(''' background-color: blue; ''')
def expand(self):
self.an = QPropertyAnimation(self.qwid1, b'geometry')
self.an.setStartValue(self.qwid1.geometry())
self.an.setEndValue(QRect(200, 60, 300, 400))
self.an.setDuration(500)
self.an.start()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
my_test = test()
my_test.show()
app.exec()