慕婉清6462132
2021-10-05 16:58:56
我試圖在按下按鈕時生成動畫,但在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
提交
取消