第六讲:图形界面应用打包实战
👉 项目官网:https://www.python-office.com/ 👈
👉 本开源项目的交流群 👈
大家好,这里是程序员晚枫,正在all in AI编程实战,全网同名。
(Tkinter / PyQt5 / PySide6 一次讲透,带图标、高 DPI、暗黑模式)
开场 30 秒
“GUI 程序打包后双击无窗口、图标模糊、Qt 插件缺失?”
本讲 20 分钟,用 3 个完整案例演示“从源码到安装包”的全流程,并给出可复制粘贴的 .spec 模板。
6.0 前置清单(1 min)
| 工具 | 版本 | 作用 |
|---|---|---|
| pyinstaller | ≥ 6.8 | 核心打包 |
| Tkinter | Python 内置 | 轻量 GUI |
| PyQt5 / PySide6 | pip 最新 | 跨平台商业级 UI |
| Qt-Tool | pip install pyqt5-tools | 生成 .qrc / designer |
6.1 Tkinter 单文件打包(5 min)
- 示例源码
1 | # tk_hello.py |
- 一键打包
1 | pyinstaller --onefile --noconsole --icon=tk.ico tk_hello.py |
- 高 DPI 不模糊
1 | # 在 tk_hello.py 顶部加 |
6.2 PyQt5 完整工程打包(8 min)
- 工程结构
1 | myqt/ |
- 资源编译
1 | pyrcc5 ui/resources.qrc -o ui/resources_rc.py |
.spec模板(可直接抄)
1 | # -*- mode: python -*- |
- 打包 & 运行
1 | pyinstaller MyQtApp.spec |
6.3 PySide6 暗黑模式与 macOS .app(4 min)
- 启用系统暗黑
1 | # 在 main.py |
macOS 上自动跟随系统深浅色。
- 生成 .app 结构
1 | pyinstaller --onedir --name MySideApp --noconsole --icon app.icns main.py |
输出
1 | dist/MySideApp.app/ |
可用 codesign 签名后再发用户。
6.4 通用避坑清单(2 min)
| 问题 | 症状 | 解决 |
|---|---|---|
| Qt 插件缺失 | 启动报 could not find or load the Qt platform plugin | 确保 hiddenimports 含 PyQt5.QtCore 且 datas 拷贝 plugins/platforms |
| 图标模糊 | 高 DPI 屏锯齿 | Tkinter 加 DPI Awareness,Qt 加 Qt.AA_EnableHighDpiScaling |
| 窗口无焦点 | macOS 首次启动 Dock 跳两下 | Info.plist 加 LSUIElement=NO |
| 字体异常 | 中文字符框 | 把字体 TTF 放 datas,代码里 QFontDatabase.addApplicationFont 加载 |
小结 & 作业(30 秒)
• Tkinter 轻量,一条命令即可交付
• PyQt5/PySide6 需处理资源、插件、高 DPI,用 .spec 模板最稳
• 下节课《第七讲:数据科学项目专场(Numpy/Pandas/Torch 瘦身)》把 500 MB 的机器学习包砍到 150 MB。
大家在学习课程中有任何问题,欢迎+微信和我交流👉我的联系方式:微信、读者群、1对1、福利



🎓 AI 编程实战课程
程序员晚枫专注AI编程培训,通过 《30讲 · AI编程训练营》,让小白也能用AI做出实际项目。帮你从零上手!
- 👉 免费试看:B站免费试看前3讲,先看看适不适合自己
- 👉 课程报名:点击这里报名,现在报名还送书📖
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 程序员晚枫 - Python自动化办公与AI编程!


