2011-08-05 46 views
3

以下代碼不會按預期方式爲按鈕設置動畫效果。但是,如果按鈕是獨立的,並且當它是一個子部件時停止工作,它就可以工作。我在這裏做錯了什麼?QPropertyAnimation不適用於子部件

我在Ubuntu上試了這個。

class TestWindow(QtGui.QWidget): 

    def __init__(self): 
     QtGui.QWidget.__init__(self) 

     self.button = QtGui.QPushButton("Ok") 
     self.button.setParent(self) 
     self.button.setGeometry(QtCore.QRect(0,0,50,50)) 
     self.button.clicked.connect(self.anim) 

    def anim(self): 

     animation = QtCore.QPropertyAnimation(self.button, "geometry") 
     animation.setDuration(10000) 
     animation.setStartValue(QtCore.QRect(0,0,0,0)) 
     animation.setEndValue(QtCore.QRect(0,0,200,200)) 
     animation.start() 

if __name__ == '__main__': 
     app = QtGui.QApplication(sys.argv) 

     r = TestWindow() 
     r.show() 

     sys.exit(app.exec_()) 
+0

您使用的是PyQt還是PySide? – fviktor

回答

5

我剛剛在Ubuntu 10.04上用PySide試了一下。嘗試保留對您的動畫對象的引用,它在這裏解決了問題:

def anim(self): 

    animation = QtCore.QPropertyAnimation(self.button, "geometry") 
    animation.setDuration(10000) 
    animation.setStartValue(QtCore.QRect(0,0,0,0)) 
    animation.setEndValue(QtCore.QRect(0,0,200,200)) 
    animation.start() 

    self.animation = animation 
+0

該修復也在PyQt上運行良好。謝謝你的提示。 – Anoop

+0

這很不明顯,缺少文檔 - 謝謝! – Junuxx

相關問題