天天看點

PyQt的圖檔資源的路徑問題。

百度到的PyQt的添加資源大部分都是通過Qt Creater添加資源的,适用于拖拽形成的界面。

問題一:純粹手寫的界面,添加資源呢?

檔案夾路徑:

|----img

    |--aa.jpg

|----view

    |---View.py

Main.py

問題二:

  在如上顯示的檔案夾下,View.py的界面在View.py中調用能正常顯示,如果在Main.py中調用View.py,圖檔資源就不能正常顯示了。

個人注解:

  出現問題二的原因是:相對路徑和絕對路徑的問題。

通過絕對路徑 + 相對路徑的方式:

  在View.py界面中擷取View.py的絕對路徑,然後添加圖檔資源相對于View.py的位置

代碼如下:

 

注:__file__隻能在腳本檔案中使用,不能在控制台下使用。

二次問題:

cxfreeze打包後 原來的資源檔案又不能顯示了。。。。。。

在GUI上添加了個QLabel顯示某一張圖檔的路徑:

整體工程的檔案夾路徑:

如圖:

圖檔直接放在img檔案夾下,view檔案夾下視圖Widget界面的py代碼,Main.py是主程式的入口。

①、

未指定打包EXE的參數,直接 執行 python setup.py build

生成的exe檔案夾路徑:

  

注:img檔案是自己手動拷過來的。檢視library.zip檔案可以看到全部的py檔案 編譯後都放在這裡邊了。

②、打包成EXE後的:

  如圖:

③、未打包成EXE前的:

解決方案:

在qt designer中添加資源文本。

如上圖,資源浏覽器在qt designer 中的右下角。

點選上邊紅圈标記的鉛筆型的按鈕,出現

左側列出的是qrc資源檔案,右側是每個資源檔案下的資源。

添加qrc資源檔案,添加字首,添加檔案。選中右側添加的檔案點選右鍵還可以改變别名。

注:添加檔案時,如果添加的檔案 和 建立的qrc文本不在一個檔案夾,會提示是否複制過來。

改變别名後:

點選OK後儲存。

比較挫的地方是儲存後qrc檔案還得編譯才行。

注:如果是在qt designer中添加的資源檔案,是在eric的resource中看不到的,得添加才行。

編譯後會多出來一個對應的  xxx_rc.py的檔案

然後代碼中就可以使用資源了。

當然,還得引入生成的檔案:

上圖中的 ":/aa/icon_4.png" 就相當于外部的資源檔案的路徑了,其中aa是剛才添加的字首,相當于檔案的路徑了

":/aa/aa" 中的第二個aa是剛才起的别名,":/aa/aa" 等同于 ":/aa/icon_3.png"

判斷代碼是否被固化: