實戰PyQt5 045 新增資源檔案

2021-10-10 15:54:01 字數 2522 閱讀 8115

為解決這些問題,我們可以使用qt官方提供的工具將這些資源檔案編譯成二進位制檔案,直接打包到程式中。為了編譯這些資源檔案,通常我們需要在**目錄下建立乙個.qrc字尾的檔案,為了敘述方便,我們假設這個檔案的名字為resource.qrc,它和我們主py檔案位於同乙個目錄。

乙個 .qrc 資源集合檔案是用來指定檔案將被嵌入其資源的 xml 檔案。根節點為 rcc ,裡面可以包含若干 qresource 節點,每個 qresource 有自己的 prefix(路徑字首)屬性,qresource 節點包含了若干 file 節點,描述了各個檔案相對於 .qrc 的路徑。在 c++ qt 的 ide 中,我們新增資源後他會自動編譯出二進位制檔案。但在 pyqt 中,我們需要手動來完成這些操作。

在resource.qrc輸入以下內容:

上面就是乙個qrc檔案的基本框架,假設我們需要使用乙個在res下名為use-python.gif的動畫檔案,在qresource 項之間插入

res/use-python.gif/file>

這時的resource.qrc檔案如下所示

res/use-python.gif

述資源檔案並不能直接使用, 需要將其轉換成對應的py檔案才能匯入,轉換命令如下:

pyrcc5  -o rosource_rc.py resource.qrc

# rosource_rc.py為轉換生成的包含資源資訊的py檔案

# resource.qrc 為我們所寫的xml資源檔案

在vs code中,我們可以借助外掛程式pyqt intergration提供的選單來轉換(需要先配置好 rcc 的路徑) :

使用該外掛程式在 .qrc 檔案上右鍵,選擇編譯資源檔案:

編譯結果如下:

使用時, 在**中先導入編譯出來的py檔案:

import resource_rc
在引用.qrc 資源中的檔案時,路徑為:冒號+prefix路徑字首+file相對路徑

self.movie = qmovie(":/res/use-python.gif")
resource.qrc檔案內容如下:

res/use-python.gif

loadresourec.py完整**如下:

import sys

from pyqt5 import qtcore, qtgui, qtwidgets

from pyqt5.qtgui import qmovie

from pyqt5.qtcore import qt, qsize

import resource_rc

class demoloadresource(qwidget): 

def __init__(self, parent=none):

super(demoloadresource, self).__init__(parent)

# 設定視窗標題

self.setwindowtitle("實戰pyqt5: loadresource demo!")      

# 設定視窗大小

self.resize(400, 300)

self.initui()

def initui(self):

vlayout = qvboxlayout(self)

self.movie = qmovie(":/res/use-python.gif")

self.disp_gif = qlabel(self)

self.disp_gif.setmovie(self.movie)

vlayout.addwidget(self.disp_gif)

self.movie.start()

self.setlayout(vlayout)

def resizeevent(self, event):  

newsize = self.disp_gif.size()

newsize.setwidth(newsize.width() - 32)

newsize.setheight(newsize.height() - 32)

self.movie.setscaledsize(newsize)

super(demoloadresource, self).resizeevent(event)       

if __name__ == '__main__':

window = demoloadresource()

window.show()

執行結果如下圖:

自定義資源載入測試

前一篇:  實戰pyqt5: 044-狀態列qstatusbar

實戰PyQt5 041 選單控制項QMenu

在乙個gui應用中,選單項都是乙個隨處都會用到的乙個控制項項。在乙個應用中選單常以以下三種方式出現 qmenu常用方法有 qmenu類繼承關係 在前一篇文章中,演示了使用qmenubar為主視窗提供選單欄的方法,在本篇中,我們進一步完善主視窗選單。import sys from pyqt5 impo...

實戰PyQt5 114 顏色類QColor

qcolor類提供基於rgb hsv或cmyk值的顏色。顏色通常用rgb 紅色 綠色和藍色 分量指定,但也可以用hsv 色相 飽和度和值 和cmyk 青色 品紅 黃色和黑色 分量指定。此外,可以使用顏色名稱指定顏色 顏色名稱可以是svg 1.0的任何顏色名稱 qcolor物件是基於rgb顏色來建立的...

實戰PyQt5 004 控制項之祖QWidget

pyqt是python圖形使用者介面 graphical user inte ce,簡稱gui 應用開發中流行的圖形開發介面庫。在gui應用中,乙個典型的視窗座標系統如圖1所示 gui視窗座標示意圖 螢幕左上角為座標原點,即 0,0 點,從左到右為x軸正向,從上到下為y軸正向。整個螢幕的座標系統就用...