フェードアウトしたいボタン ウィジェットがあります ( self.button1
)
def button_slot(self):
fade_effect = QtGui.QGraphicsOpacityEffect()
self.button1.setGraphicsEffect(fade_effect)
hideAnimation = QtCore.QPropertyAnimation(fade_effect, "opacity")
hideAnimation.setDuration(5000)
hideAnimation.setStartValue(1.0)
hideAnimation.setEndValue(0.0)
hideAnimation.start(QtCore.QPropertyAnimation.DeleteWhenStopped)
self.hideAnimation = hideAnimation
コードは PyQt にありますが、元の Qt と同じです。
理由により、テストファイルでコードを個別に試すと、うまく機能します。ただし、コードに統合しようとすると、フェードアウト アニメーションがバックグラウンドで実行されているように見えますが、GUI 自体では更新されていません。
- ボタンが「クリックされた」状態でスタックします。
- ウィンドウを最小化して拡大すると、ボタンの不透明度は本来あるべき場所になります (たとえば、期間が 1.0 から 0.0 までの 5000 ミリ秒の場合、2500 ミリ秒後にウィンドウを拡大すると 0.5 の不透明度が表示されます)。
- 「動かなくなった」ように見えますが、ボタンはクリック可能です。
なぜこれが起こっているのでしょうか?イベントの反復ごとに GUI を強制的に更新するにはどうすればよいですか?