PyQt完整軟件綜合案例:登錄框
基于教材《PyQt編程快速上手》5.4登錄框開發(fā)實(shí)戰(zhàn)。部分基礎(chǔ)知識(shí):
《快速掌握PyQt5》第五章 完善登錄框小程序:https://zhuanlan.zhihu.com/p/75527971
《快速掌握PyQt5》第十四章 快速制作界面Qt Designer:https://zhuanlan.zhihu.com/p/75673557
《快速掌握PyQt5》第二十五章 Pyinstaller打包:https://zhuanlan.zhihu.com/p/86966093
白月黑羽 -?動(dòng)態(tài)加載UI文件(視頻):https://www.bilibili.com/video/BV1cJ411R7bP?p=5
白月黑羽 -?動(dòng)態(tài)加載UI文件(代碼):https://www.byhy.net/tut/py/gui/qt_03/#%E5%8A%A8%E6%80%81%E5%8A%A0%E8%BD%BDui%E6%96%87%E4%BB%B6
Anaconda創(chuàng)建、使用、刪除Python虛擬環(huán)境:https://zhuanlan.zhihu.com/p/594405403
第一步?前端設(shè)計(jì)
使用pyqt5-tools庫自帶的Qt Designer以可視化的形式完成:

保存的格式為“.ui”,保存在準(zhǔn)備好的文件夾內(nèi):

第二步 加載.ui文件
方法1:采用python自帶工具pyui5
方法1的外部工具方案:先添加為外部工具,然后使用。


方法1的代碼實(shí)現(xiàn)方案:使用代碼調(diào)用pyui5,參考https://www.byhy.net/tut/py/gui/qt_03/#%E8%BD%AC%E5%8C%96ui%E6%96%87%E4%BB%B6%E4%B8%BApython%E4%BB%A3%E7%A0%81

方法2:使用PyQt5庫的uic,加載ui定義
參考資料:https://www.byhy.net/tut/py/gui/qt_03/#%E5%8A%A8%E6%80%81%E5%8A%A0%E8%BD%BDui%E6%96%87%E4%BB%B6
把原先的:
改成
對(duì)于類內(nèi)部函數(shù),添加內(nèi)容:(但在實(shí)際操作中,因?yàn)閷?duì)“面向?qū)ο蟆钡牟僮鞑皇煜ぃ惠敵隽丝粘绦蚩?,這部分內(nèi)容讀者可以自行摸索)
第三步 后端編程
1. 先前加載出的UI模塊login_ui.py
2. 窗口邏輯模塊window.py
3. 主程序main.py
第四步 測(cè)試(打包前)

第五步 打包
1. 基礎(chǔ)打包法:多文件打包模式(cmd命令)
生成三個(gè)文件:build文件夾里是編譯文件,可刪除;dist文件夾(89.3MB)是軟件本體,內(nèi)有main.exe;main.spec是打包配置文件,用來打包,因?yàn)榇虬昧?,所以可刪除。對(duì)于login_ui.py中用到的com_it.jpg文件,需要手動(dòng)復(fù)制到main文件夾才能生效(main.exe所在的文件夾)。也就是說,程序中的資源文件都是需要手動(dòng)復(fù)制的,解決方法見下文第5條。

2. 單文件打包模式
dist文件夾內(nèi)只有一個(gè)main.exe(單文件,34.8MB)。但因?yàn)樯婕皦嚎s、解壓的過程,程序運(yùn)行會(huì)變慢。
3. 取消exe運(yùn)行時(shí)的調(diào)試黑框
4. 給可執(zhí)行文件exe加上圖標(biāo)
提前在目錄內(nèi)準(zhǔn)備好一個(gè)圖標(biāo),再運(yùn)行cmd:(可能需要移動(dòng)一下exe的路徑,圖標(biāo)才變化)


5. 資源文件自動(dòng)打包
免去手動(dòng)復(fù)制的麻煩:
本例中,就是用:(多文件打包模式)
如果是單文件打包模式,在login_ui中加上res_path函數(shù),并給函數(shù)中的各個(gè)路徑套上:
套上路徑:
cmd指令:
圖標(biāo)成功顯示:(好累啊……)

6. 減小打包后的體積
方向1:采用虛擬環(huán)境(實(shí)測(cè)似乎對(duì)PyQt的效果不佳)
應(yīng)該還有別的方法。我是查到可以采用Anaconda Prompt創(chuàng)建虛擬環(huán)境:https://zhuanlan.zhihu.com/p/594405403
如圖,創(chuàng)建成功:

然后給虛擬環(huán)境安裝庫:
修改路徑,然后打包:
新的打包文件由34.8MB降到34.1MB,我暈??

關(guān)閉環(huán)境、移除虛擬環(huán)境、查看已安裝環(huán)境:
可見成功移除:

方向2:移除指定的庫
新的打包文件由34.8MB降到34.8MB,絕了

方向3:使用UPX工具
官網(wǎng):https://upx.github.io/
我用的是upx-4.0.2-win64版本,解壓后放在main.py所在文件夾后(或者添加到環(huán)境變量中),運(yùn)行cmd:
新的打包文件由34.8MB降到27.3MB,什么叫專業(yè)?。?/p>
第六步(最后一步) 完善
發(fā)現(xiàn)忘記加-w了,加!再exclude一下,疊個(gè)buff。來!
exclude之后體積還更大了……下次不ex了??

啟動(dòng)!——
