欢迎光临散文网 会员登陆 & 注册

PyQt完整软件综合案例:登录框

2023-07-15 22:04 作者:矢来美羽MIUYARAI  | 我要投稿

基于教材《PyQt编程快速上手》5.4登录框开发实战。部分基础知识:

  1. 《快速掌握PyQt5》第五章 完善登录框小程序:https://zhuanlan.zhihu.com/p/75527971

  2. 《快速掌握PyQt5》第十四章 快速制作界面Qt Designer:https://zhuanlan.zhihu.com/p/75673557

  3. 《快速掌握PyQt5》第二十五章 Pyinstaller打包:https://zhuanlan.zhihu.com/p/86966093

  4. 白月黑羽 - 动态加载UI文件(视频):https://www.bilibili.com/video/BV1cJ411R7bP?p=5

  5. 白月黑羽 - 动态加载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

  6. Anaconda创建、使用、删除Python虚拟环境:https://zhuanlan.zhihu.com/p/594405403

第一步 前端设计

使用pyqt5-tools库自带的Qt Designer以可视化的形式完成:

保存的格式为“.ui”,保存在准备好的文件夹内:

第二步 加载.ui文件

方法1:采用python自带工具pyui5

方法1的外部工具方案:先添加为外部工具,然后使用。

方法1的代码实现方案:使用代码调用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

把原先的:

改成

对于类内部函数,添加内容:(但在实际操作中,因为对“面向对象”的操作不熟悉,只输出了空程序框,这部分内容读者可以自行摸索)

第三步 后端编程

1. 先前加载出的UI模块login_ui.py

2. 窗口逻辑模块window.py

3. 主程序main.py

第四步 测试(打包前)

第五步 打包

1. 基础打包法:多文件打包模式(cmd命令)

生成三个文件:build文件夹里是编译文件,可删除;dist文件夹(89.3MB)是软件本体,内有main.exe;main.spec是打包配置文件,用来打包,因为打包好了,所以可删除。对于login_ui.py中用到的com_it.jpg文件,需要手动复制到main文件夹才能生效(main.exe所在的文件夹)。也就是说,程序中的资源文件都是需要手动复制的,解决方法见下文第5条。

2. 单文件打包模式

dist文件夹内只有一个main.exe(单文件,34.8MB。但因为涉及压缩、解压的过程,程序运行会变慢。

3. 取消exe运行时的调试黑框

4. 给可执行文件exe加上图标

提前在目录内准备好一个图标,再运行cmd:(可能需要移动一下exe的路径,图标才变化)

使用前
使用后

5. 资源文件自动打包

免去手动复制的麻烦:

本例中,就是用:(多文件打包模式)

如果是单文件打包模式,在login_ui中加上res_path函数,并给函数中的各个路径套上

套上路径:

cmd指令:

图标成功显示:(好累啊……)

6. 减小打包后的体积

方向1:采用虚拟环境(实测似乎对PyQt的效果不佳)

应该还有别的方法。我是查到可以采用Anaconda Prompt创建虚拟环境:https://zhuanlan.zhihu.com/p/594405403

如图,创建成功:

然后给虚拟环境安装库:

修改路径,然后打包:

新的打包文件由34.8MB降到34.1MB,我晕😵

关闭环境、移除虚拟环境、查看已安装环境:

可见成功移除:

方向2:移除指定的库

新的打包文件由34.8MB降到34.8MB,绝了

方向3:使用UPX工具

官网:https://upx.github.io/

我用的是upx-4.0.2-win64版本,解压后放在main.py所在文件夹后(或者添加到环境变量中),运行cmd:

新的打包文件由34.8MB降到27.3MB,什么叫专业啊!

第六步(最后一步) 完善

发现忘记加-w了,加!再exclude一下,叠个buff。来!

exclude之后体积还更大了……下次不ex了😡

启动!——


PyQt完整软件综合案例:登录框的评论 (共 条)

分享到微博请遵守国家法律