打包資源文件
使用PyQt 5生成的應(yīng)用程序引用圖片資源主要有兩種方法,第一種方法是將資源文件轉(zhuǎn)換為Python文件,然后引用Python文件;第二種方法是在程序中通過相對(duì)路徑引用外部圖片資源。由于第一種方法會(huì)涉及Qt Designer,所以放在本章介紹;對(duì)于第二種方法,使用起來非常簡(jiǎn)單,我后面也會(huì)介紹。下面詳細(xì)介紹第一種方法的實(shí)現(xiàn)過程。
一、使用Qt Designer 加載資源文件
在 Qt Designer中設(shè)計(jì)界面時(shí)是不能直接加入圖片和圖標(biāo)等資源的,而是需要在PyQt開發(fā)目錄下編寫.qrc文件(可以用文本編輯器打開擴(kuò)展名為.qrc的資源文件)。
(1)新建一個(gè)資源文件apprcc.qrc,它的內(nèi)容如下:

(2)打開Qt Designer,新建一個(gè)類型為 Widget的簡(jiǎn)單窗體,該窗體文件名為MainWin02.ui。然后打開資源瀏覽器,按如下圖所示進(jìn)行操作。

首先進(jìn)入資源編輯界面,然后打開資源文件,這里打開上面創(chuàng)建的資源文件apprcc.qrc。接下來選中apprcc.qrc,設(shè)置圖片資源的前綴為 pic。最后添加或刪除圖片資源。
添加完成后,資源瀏覽器效果如下如:

按照以上步驟添加圖片資源后,用文本編輯器查看apprcc.qrc文件,發(fā)現(xiàn)它是XML格式的。

二、在窗體中使用資源文件
1.使用Qt Designer在窗體中放置控件
繼續(xù)使用Qt Designer操作 MainWin02.ui文件。在 Qt Designer 窗口左側(cè),將Display Widgets欄中的Label控件拖到窗體Form中間并選中它,然后在Qt Designer窗口右側(cè)的屬性編輯器中找到 pixmap屬性,單擊其后面的按鈕,把它的值改為資源文件中的一張圖片,如圖所示。

2. 將.ui文件轉(zhuǎn)換為.py文件
使用pyuic5命令將.ui文件轉(zhuǎn)換為.py文件。
生成的完整代碼如下:
為了使窗口的顯示和業(yè)務(wù)邏輯分離,再新建一個(gè)調(diào)用窗口顯示的文件 CallMainWin02.py,其完整代碼如下:
運(yùn)行 CallMainWin02.py文件,會(huì)拋出如下異常信息,提示在 MainWin02.py 中找不到模塊apprcc_rc.

這說明在腳本中使用以下代碼導(dǎo)入的模塊異常。
調(diào)用腳本還差關(guān)鍵的一步,就是將.qrc文件轉(zhuǎn)換為.py文件,然后導(dǎo)入正常的.py資源文件。
3、 轉(zhuǎn)換資源文件
使用PyQt 5提供的pyrcc5命令將apprcc.qrc文件轉(zhuǎn)換為apprcc_rc.py 文件((之所以添加rc,是因?yàn)镺t Designer 導(dǎo)入資源文件時(shí)默認(rèn)是加_rc 的,這里是為了與Qt Designer一致)。
轉(zhuǎn)換完成后,在同級(jí)目錄下會(huì)多出一個(gè)與.qrc文件同名的.py文件。查看apprcc_rc.py文件,其內(nèi)容如下:
可以看出,該文件已經(jīng)使用QtCore.qRegisterResourceData進(jìn)行了初始化注冊(cè),所以可以直接引用該文件。
4、導(dǎo)入.py資源文件
在界面文件 Main Win02.py 中,需要使用以下代碼直接導(dǎo)入.py資源文件。
在 Qt Designer中使用圖片資源時(shí),圖片資源的引入路徑是冒號(hào)“:”加圖片的路徑,示例代碼如下:
注意到上面的路徑與qrc文件的路徑稍微有些不同,多了一個(gè)前綴“pic”,原因是Qt Designer 會(huì)自動(dòng)根據(jù)qrc中的qresource標(biāo)簽來調(diào)整這個(gè)路徑。如圖所示,在qresource標(biāo)簽中有一個(gè)“pic”屬性,Qt Designer會(huì)自動(dòng)把“pic”添加到圖片路徑i中。

運(yùn)行CallMain Win02.py文件,顯示效果如圖所示。

運(yùn)行腳本一切正常,可以在窗口中看到所導(dǎo)入的圖片資源。