1. 程式人生 > >pyqt(二)動圖(gif)顯示與資原始檔(qrc檔案)

pyqt(二)動圖(gif)顯示與資原始檔(qrc檔案)

前言

前面簡單說了下win和mac下環境的搭建
pyqt(一)pyqt環境搭建 win+mac
現在來說下,前面專案中遇到的問題。
首先想講一下動態圖和資原始檔,因為我是第一次使用pyqt所以對資原始檔沒立即的理解,所以在gif引用的時候一直出錯。
這裡來說下如何正確的使用gif圖片

引用gif圖片

引用gif百度很容易可以找到,類似下面的方法

    self.gif = QMovie('qq.gif')
    self.label_gif.setMovie(self.gif)
    self.gif.start()

這樣的方法沒有錯,但這裡的qq.gif是本地路徑,並不適合後面打包成exe

然後我想到像新增靜態圖片那樣使用改變樣式表,如下圖
新增資源
但這樣新增後,會發現執行但時候,gif變為了一張靜態圖片,並沒有gif的動態效果。。。

這時候,我就想如何才能將gif打包進exe裡,讓QMovie能訪問。
這時候看了下ui檔案轉成的py檔案
qrc路徑
可以發現ui檔案轉成的py檔案新增的靜態檔案並不是使用的本地路徑,而是使用了一個奇怪的路徑。而這個奇怪的路徑就是前面資原始檔中我們所建立的目錄
路徑
這樣就可以發現將gif圖片放進資原始檔然後使用資原始檔中路徑這不就好了

	self.gif = QMovie(':/platelet/1.gif')
    self.label_5.setMovie(self.gif)
    self.gif.start()

所以用上面的程式碼試了下,然後發現可以得到可愛的血小板動圖的效果了。

gif圖尺寸的調整

本以為到上面就完美的解決gif動圖的問題了,但到插入紅細胞gif動圖的時候,因為動圖尺寸較大,而實際需要縮放,給的label尺寸就小於gif動圖的尺寸,這時候就發現,動圖不能展示完全了。
fail
可以發現因為尺寸不匹配所以導致,對不起這三個字沒有出現在圖片中,因為pyqt的資料較少,最終通過qt的資料還是找到了調節尺寸的方法

	self.gif = QMovie(':/platelet/5.gif')
    self.gif.setScaledSize(QSize(200,200))
    self.label.setMovie(self.gif)
    self.gif.start()

沒錯就是self.gif.setScaledSize(QSize(200,200))這句,在Qsize中寫入調整後的尺寸大小
然後就能成功得到顯示正確的gif圖了
success

結語

本文主要回憶了在pyqt中新增gif圖片時遇到的問題,如何正確的使用資原始檔,如何調整gif圖片的大小。因為作者水平有限,也是初學,所以提到的都是些很基礎的問題,理解上也很可能有錯誤,如果有什麼說錯的地方還請各位大佬不吝賜教。
紅細胞