1
QMainWindowをアニメーション化する際に問題が発生しました。サイドパネルの「スライド」アニメーションを作成しようとしています。 "app.exec"の前に呼び出すとうまく動作しますが、 "animate_out"関数を呼び出すと何もしないようです。何か案は?メインウィンドウでQProcessAnimationを使用
PS:私が探しているものの例を見るために、コードを下に向かってコメント解除できます。
おかげ
# PYQT IMPORTS
from PyQt4 import QtCore, QtGui
import sys
import UI_HUB
# MAIN HUB CLASS
class HUB(QtGui.QMainWindow, UI_HUB.Ui_HUB):
def __init__(self):
super(self.__class__, self).__init__()
self.setupUi(self)
self.setCentralWidget(self._Widget)
self.setWindowTitle('HUB - 0.0')
self._Widget.installEventFilter(self)
self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint)
self.set_size()
self.animate_out()
def set_size(self):
# Finds available and total screen resolution
resolution_availabe = QtGui.QDesktopWidget().availableGeometry()
ava_height = resolution_availabe.height()
self.resize(380, ava_height)
def animate_out(self):
animation = QtCore.QPropertyAnimation(self, "pos")
animation.setDuration(400)
animation.setStartValue(QtCore.QPoint(1920, 22))
animation.setEndValue(QtCore.QPoint(1541, 22))
animation.setEasingCurve(QtCore.QEasingCurve.OutCubic)
animation.start()
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
form = HUB()
form.show()
form.raise_()
form.activateWindow()
# Doing the animation here works just fine
# animation = QtCore.QPropertyAnimation(form, "pos")
# animation.setDuration(400)
# animation.setStartValue(QtCore.QPoint(1920, 22))
# animation.setEndValue(QtCore.QPoint(1541, 22))
# animation.setEasingCurve(QtCore.QEasingCurve.OutCubic)
# animation.start()
app.exec_()
あなたの関数で 'animation.start()'を呼び出すことを忘れましたか? – Mailerdaimon
HI @Mailerdaimon、応答に感謝します。はい、この例では "animation.start()"という行を広告に忘れていました。しかし、それを私のスクリプトに追加することは何の違いもないようです。 – DevilWarrior
コンストラクタの後にアニメーションを開始してください。私はそれが "showEvent"で動作するかどうかは分かりませんが、試してみることができます。 – Mailerdaimon