1. 程式人生 > 程式設計 >PyQt使用QPropertyAnimation開發簡單動畫

PyQt使用QPropertyAnimation開發簡單動畫

QPropertyAnimation是PyQt5.QtCore模組提供的動畫設計類,使用該類可以針對PyQt的介面物件進行動畫播放,如果要針對一個指定物件進行動畫播放,包括如下步驟:

一、建立動畫物件

建立時要確認需要進行動畫處理的物件以及物件的變化屬性,通過:
QPropertyAnimation(QObject target,QByteArray propertyName,QObject parent)來建立動畫物件:

其中:
1、target為準備進行動畫動作的物件,可以不填,不填時動畫物件建立後要使用setTargetObject來設定動作物件;
2、propertyName為動作物件變更的屬性,可以不填,不填時動畫物件建立並設定動畫動作的物件要使用setPropertyName來設定變更的屬性;

3、parent為動作物件的父物件,可以不填,不填預設為None。

二、指定動作的初始狀態

動作的初始狀態就是指動作物件變更的屬性的起始值,如果不設定就是物件的當前值。要設定初始值,使用:
setStartValue(屬性初始值)

三、指定動作的最終狀態

動作的最終狀態就是指動作物件動畫結束後屬性的值,要設定屬性最終值,使用:
setEndValue(屬性最終值)

四、指定動畫時長

動畫時長就是從初始狀態變更為最終狀態的時長,要設定動畫時長使用:
setDuration(time)
單位為毫秒。

五、進行動畫播放

使用start()進行動畫播放。

案例

要將介面上一個叫testButton的按鈕的起始位置向x軸和y軸方向各挪動一10個畫素,並用動畫形式展現挪動過程,相關動畫的程式碼如下:

 def startAnimation(self):
    animation = QPropertyAnimation(self.testButton,b"geometry",self)
    #animation.setTargetObject(self.testButton)
    #animation.setPropertyName(b"geometry")
    startpos = self.testButton.geometry()
    newpos = QRect(startpos.x()+10,startpos.y()+10,startpos.width(),startpos.height())

    #animation.setStartValue(startpos)
    animation.setEndValue(newpos)
    animation.setDuration(1000)
    animation.start()

注意呼叫方法中的屬性名是二進位制字串,因此加"b",而看了網上很多案例屬性前都沒有加"b",但在PyQt5.13版本中無法正常執行,其他版本老猿不能確認。

關於QPropertyAnimation類更多的內容大家可以參考《pyqt5中動畫的使用》。

到此這篇關於PyQt使用QPropertyAnimation開發簡單動畫的文章就介紹到這了,更多相關PyQt QPropertyAnimation動畫內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!