2011-08-05 5 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

私はちょうどPySideでUbuntu 10.04で試しました。あなたのアニメーションオブジェクトへの参照を維持しようとすると、ここで問題を解決しました:

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