我试图在按下按钮时生成动画,但在self.frame2返回到大小 0后它不起作用:这是一个例子:帧返回 0 后,动画不会再次完成:from PyQt5.QtWidgets import QMainWindow,QApplicationfrom PyQt5 import QtCorefrom PyQt5 import uicclass Login(QMainWindow): def __init__(self): QMainWindow.__init__(self) uic.loadUi("1.-Login.ui",self) #Apariencia de Ventana self.setWindowFlags(QtCore.Qt.FramelessWindowHint) self.setAttribute(QtCore.Qt.WA_NoSystemBackground,True) self.setAttribute(QtCore.Qt.WA_TranslucentBackground, True) #Botones self.Ajustes.clicked.connect(self.animaAjustes) self.ComboSuc.lineEdit().setAlignment(QtCore.Qt.AlignCenter) self.animation = QtCore.QPropertyAnimation(self.frame2, b'size', self) self.animation.setStartValue(QtCore.QSize(0,0)) self.animation.setEndValue(QtCore.QSize(145,443)) self.animation.setDuration(200) self.animation.setDirection(QtCore.QAbstractAnimation.Forward) def animaAjustes(self): if self.frame2.width()!=0: self.frame2.setGeometry(0,0,0,0) else: self.animation.start()app = QApplication([])l = Login()l.show()app.exec_()
2 回答
萧十郎
TA贡献1815条经验 获得超13个赞
几何是小部件相对于父级的位置,在初始情况下,几何是 (480, 0, 0, 443),也就是说,它的宽度为 0 但它位于 frame1 的右边缘及其之后设置为几何体 (0 , 0, 0, 0) 您将其移动到窗口的左上角位置并在那里应用动画,但您看不到它为什么在 frame1 后面。
为了更好地观察错误,请使用 raise_ 以便框架位于所有错误之上。
def animaAjustes(self):
if self.frame2.width() != 0:
self.frame2.setGeometry(0, 0, 0, 0)
else:
self.frame2.raise_() # <--- this change will make the error visible
self.animation.start()
解决办法只是改变大小,而不是几何体(几何体是位置+大小):
def animaAjustes(self):
if self.frame2.width() > 0:
self.frame2.resize(0, 0)
else:
self.animation.start()
添加回答
举报
0/150
提交
取消