Tips,PySide,PySide2,Python,Qt,MayaQPropertyAnimationアニメーションフレームワークとはQObjetのプロパティを動的に変更することによって,ウィジェットやグラフィックスビューのアイテムやQObjectの任意のサブクラスで,アニメーション効果を利用できます。app.exec_()上のコードを実行すると下の画像のようなwindowが表示されるかと思います次にボタンに対してアニメーションを追加したいのでアニメーションフレームワークに用意されているクラスQPropertyAnimationを使用しますQPropertyAnimationはQtのプロパティを動的に変更してアニメーションをさせることができるクラスですQSequentialAnimationGroupとQParallelAnimationGroupは複数のアニメーションをつなぎ合わせ、並列に動作させることができ、これらのアニメーションがよく使われています。「アニメーション」は、QPushButtonの"pos"プロパティを変化させて実現できます。オブジェクトを定義します。)これでself.Buttonの"pos"プロパティにアニメーションを付ける準備ができました。後はアニメーションを付ける時間と開始/終了値の"pos"の値を定義します。アニメーションの終了値アニメーションの動作を制御するには上記の関数を定義する必要があります。initUIにそれぞれを定義していきます。今回は、動作時間を2秒に設定し開始値と終了値を設定してみます。self.ProAni.setEndValue(QPoint(150,200))上のコードを追加し、この状態でScriptを実行してみます。実行してみてもアニメーションが動くことはありませんというのも、アニメーションを動かすには"start()"を定義しなければならないためです。self.ProAni.start()上のコードのように"start()"を定義して実行すると下の画像のwindowのようにうまくボタンが動いたと思いますしかし、たんに一定速度で動かすだけではあじっけがありません。ここで少しスパイスを付けてみたいと思います。"setStartValue()"と"setEndValue()"の代わりに"setKeyValueAt()"を用いて、第一引数で時間経過の割合を0.0から1.0の間の値で指定し,第二引数で対応する経過値を指定します。self.ProAni.start()上のコードを実行すると下の画像のようにwindow内のボタンが素早く奥まで動きゆっくりと戻ってくると思います。このように設定することでちょっとしたアクセントをつけることができ、UIに楽しさを追加することができます。このほかに"setEasingCurve()"というものがあり、これによって加速度を考慮したアニメーションを実現することができます。"setStartValue()"と"setEndValue()"で使用したコードを再び使い定義してみます。self.ProAni.start()上のコードを実行すると下の画像のようにwindow内のボタンがバウンドするような表現ができたかと思いますQEasingCurveは4つの加速原則の方法と10種類の保管曲線を組み合わせ、40種類あります。それに加えLinearや、ユーザ定義のCustomがあります。コメントをキャンセルメールアドレスが公開されることはありません。*ウェブサイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。MayaやPySideの情報を中心にメモ帳代わりにして気ままに更新しています。