Piggy Nap 小猪定时关机助手开发方案

1. 项目概述

1.1 中文名称

小猪定时关机助手

1.2 英文名称

Piggy Nap

1.3 名称定位

不采用直译式英文名,例如:

Pig Shutdown Assistant

而采用更自然、更有记忆点的英文品牌名:

Piggy Nap

该名称的含义更接近:

小猪打盹
让电脑休息一会儿
睡前自动关机小工具

1.4 推荐展示方式

软件对外展示建议统一使用:

Piggy Nap
小猪定时关机助手

窗口标题建议:

Piggy Nap - 小猪定时关机助手

最终 exe 文件名建议:

PiggyNap.exe

工程目录名建议:

piggy_nap

2. 软件定位

Piggy Nap 是一款基于 Python + PySide6 / Qt6 开发的 Win10 / Win11 桌面定时关机小工具。

软件采用 粉色小猪卡通风格,支持:

  • 快捷倒计时关机;
  • 自定义时间关机;
  • 倒计时显示;
  • 取消自动关机;
  • 系统托盘;
  • 开机自启动;
  • 普通关机 / 强制关机切换;
  • 关机前提醒;
  • 测试模式,便于开发调试。

项目目标不是做复杂的系统管理工具,而是做一个:

简单、可爱、稳定、容易打包、双击就能用的 Windows 桌面小工具。

3. 已确认需求

序号项目需求
1开发语言Python
2GUI 框架PySide6 / Qt6
3中文名称小猪定时关机助手
4英文名称Piggy Nap
5目标系统Windows 10 / Windows 11
6系统架构64 位
7快捷按钮10 分钟 / 30 分钟 / 1 小时 / 2 小时
8自定义时间支持选择具体时间
9倒计时显示需要
10托盘功能第一版实现
11开机自启动第一版实现
12界面风格粉色小猪卡通风格
13素材原则原创小猪素材,不直接使用小猪佩奇官方素材
14关机方式支持普通关机和强制关机
15关机提醒建议加入关机前提醒
16调试保护建议加入测试模式

4. 风格与版权边界

4.1 推荐风格

软件视觉风格建议为:

粉色小猪卡通风格

视觉元素可以包括:

  • 粉色小猪;
  • 睡帽;
  • 月亮;
  • 星星;
  • 云朵;
  • Zzz 睡眠符号;
  • 柔和圆角按钮;
  • 儿童绘本风格背景。

4.2 不建议使用的内容

为了降低版权风险,不建议直接使用:

  • 小猪佩奇官方图片;
  • Peppa Pig 名称;
  • 官方 Logo;
  • 官方角色造型;
  • 动画截图;
  • 官方字体;
  • 官方配色和构图的高度仿制设计。

4.3 推荐表述

对外宣传建议使用:

粉色小猪卡通风格

而不是:

小猪佩奇风格

这样既保留了可爱、亲和、童趣的方向,又能避免明显的版权风险。


5. 软件图标设计建议

5.1 图标主题

Piggy Nap 的图标建议设计为:

一只原创粉色小猪 + 睡帽 + 月亮 + Zzz

图标应该一眼传达两个信息:

  1. 小猪;
  2. 睡觉 / 休息 / 关机。

5.2 图标关键词

后续如果使用 AI 生成图标或请设计师制作,可以使用以下关键词:

pink pig
sleeping pig
sleepy piglet
moon
zzz
bedtime
soft rounded icon
cute desktop app icon
cartoon pig icon

5.3 图标尺寸建议

用途建议尺寸
exe 图标.ico 多尺寸
窗口左上角图标32 × 32
系统托盘图标16 × 16 / 32 × 32
主界面 Logo128 × 128 / 256 × 256
GitHub README 展示图512 × 512

6. 功能范围

6.1 第一版实现功能

功能是否实现说明
单窗口主界面所有功能集中在一个窗口
10 分钟后关机快捷按钮
30 分钟后关机快捷按钮
1 小时后关机快捷按钮
2 小时后关机快捷按钮
自定义时间关机例如 23:30 自动关机
倒计时显示每秒刷新剩余时间
设置自动关机调用 Windows shutdown 命令
取消自动关机调用 shutdown /a
普通关机shutdown /s /t 秒数
强制关机shutdown /s /f /t 秒数
强制关机开关通过复选框控制
关机前提醒建议实现关机前 60 秒提醒
系统托盘支持最小化到托盘
托盘快捷菜单可快速设置或取消关机
开机自启动用户手动勾选
测试模式建议实现防止开发调试时误关机
粉色小猪卡通 UIQSS + 原创素材
PyInstaller 打包生成 exe

6.2 第一版暂不实现功能

功能原因
多语言切换第一版没有必要
网络同步时间本地系统时间已够用
用户登录系统不需要
云端配置不需要
复杂动画增加开发成本
多个关机计划第一版只保留一个计划
远程控制关机涉及安全风险,暂不做
软件自动更新第一版暂不需要
安装包第一版优先单 exe,后续再做安装包

7. 关机实现原理

7.1 Windows shutdown 命令

Windows 自带 shutdown 命令,可以直接用于定时关机。

普通关机:

shutdown /s /t 3600

含义:

3600 秒后关机

强制关机:

shutdown /s /f /t 3600

取消关机:

shutdown /a

7.2 参数说明

参数含义
/s关闭计算机
/f强制关闭正在运行的应用程序
/t设置倒计时时间,单位为秒
/a取消已设置的关机计划

8. 普通关机 / 强制关机开关设计

8.1 为什么建议增加开关

虽然项目最初确认采用强制关机,但如果强制关机成为唯一方式,风险较高。

例如用户正在编辑:

  • Word;
  • Excel;
  • Keil 工程;
  • Altium 工程;
  • VS Code 代码;
  • 浏览器表单;
  • 正在下载或复制的文件;

到点强制关机可能导致数据丢失。

因此建议界面中增加复选框:

☑ 强制关闭正在运行的程序

8.2 默认策略建议

可以采用:

默认勾选强制关机,但界面必须明确提示风险。

或者采用更安全的策略:

默认不勾选强制关机,由用户主动开启。

从软件体验和安全性角度,更推荐:

默认不勾选强制关机。

8.3 命令逻辑

未勾选强制关机:

shutdown /s /t 秒数

勾选强制关机:

shutdown /s /f /t 秒数

8.4 界面提示

建议在复选框下方显示:

强制关机会关闭未保存的程序,请提前保存文件。

9. 关机前提醒设计

9.1 设计目的

关机前提醒用于降低误关机风险,尤其是在开启强制关机时非常重要。

9.2 推荐提醒时间

第一版建议固定为:

关机前 60 秒提醒

后续版本可以扩展为可选:

30 秒 / 60 秒 / 3 分钟 / 5 分钟

9.3 提醒方式

可以采用 PySide6 弹窗:

Piggy Nap 提醒:

电脑将在 60 秒后自动关机。
请保存文件。

[取消关机] [知道了]

9.4 注意事项

如果软件已经退出,软件自身无法弹出提醒。

因此第一版的逻辑可以设计为:

软件状态关机前提醒是否可用
软件正在运行可以提醒
软件最小化到托盘可以提醒
软件已经退出无法提醒
Windows 关机计划仍存在仍会关机

文档和界面中需要说明:

关机计划由 Windows 执行,软件退出后仍然有效;但软件退出后无法弹出关机前提醒。

10. 时间设置逻辑

10.1 快捷按钮

快捷按钮如下:

按钮实际秒数
10 分钟后关机600 秒
30 分钟后关机1800 秒
1 小时后关机3600 秒
2 小时后关机7200 秒

10.2 自定义具体时间

用户可以选择具体时间,例如:

23:30

软件根据当前时间计算剩余秒数:

目标时间 - 当前时间 = 剩余秒数

10.3 时间已过的处理

如果用户选择的时间早于当前时间,则自动理解为明天同一时间。

例如:

当前时间用户选择实际关机时间
今天 20:0023:30今天 23:30
今天 22:0021:30明天 21:30
今天 23:5900:10明天 00:10

10.4 设置成功后的显示

当前状态:已设置自动关机
目标时间:今天 23:30
距离睡觉还有:01小时 25分钟 30秒

11. 倒计时显示设计

11.1 显示内容

设置成功后,主界面显示:

当前状态:已设置自动关机
目标时间:今天 23:30
距离睡觉还有:01小时 25分钟 30秒

11.2 刷新方式

使用 PySide6 的 QTimer 每秒刷新一次界面显示。

注意:

QTimer 只负责界面倒计时显示。
真正的关机计划由 Windows shutdown 命令负责。

这样做的好处是:

情况是否仍会关机
软件保持打开
软件最小化到托盘
软件被关闭
界面倒计时停止不影响 Windows 关机计划

12. 主界面设计

12.1 主界面草图

┌────────────────────────────────────┐
│        🐷 Piggy Nap                 │
│        小猪定时关机助手              │
│                                    │
│        今天想几点让电脑睡觉?        │
│                                    │
│              [ 23 : 30 ]           │
│                                    │
│   [10分钟] [30分钟] [1小时] [2小时] │
│                                    │
│          [ 设置自动关机 ]           │
│          [ 取消自动关机 ]           │
│                                    │
│ 当前状态:小猪还醒着                 │
│ 距离睡觉还有:--:--:--              │
│                                    │
│ □ 强制关闭正在运行的程序             │
│ □ 开机自动启动 Piggy Nap            │
│ ☑ 关闭窗口时最小化到托盘             │
│                                    │
│ 提示:请提前保存文件。               │
└────────────────────────────────────┘

12.2 窗口建议

项目建议
窗口大小460 × 460
是否可调整大小第一版固定大小
背景色浅粉色 / 奶油粉
主按钮粉色圆角按钮
取消按钮稍醒目
字体Microsoft YaHei
主 Logo原创睡觉小猪图标
操作方式鼠标点击为主

13. 交互文案建议

Piggy Nap 可以适当采用可爱文案,但不能影响用户理解。

13.1 推荐文案

功能推荐文案
设置关机设置自动关机
取消关机取消自动关机
倒计时距离睡觉还有
未设置状态小猪还醒着
已设置状态小猪准备睡觉啦
成功提示已设置自动关机
取消提示已取消自动关机

13.2 不建议过度可爱化

例如不建议按钮只写:

睡觉觉
先别睡

原因是用户可能不清楚具体功能。

推荐写法是:

设置自动关机
取消自动关机

在状态栏和提示语里加入可爱风格即可。


14. 系统托盘设计

14.1 托盘功能

第一版实现系统托盘功能。

点击窗口关闭按钮时,默认:

最小化到系统托盘,不直接退出软件。

14.2 托盘菜单建议

托盘右键菜单建议设计为:

打开 Piggy Nap
10 分钟后关机
30 分钟后关机
1 小时后关机
2 小时后关机
取消自动关机
退出

14.3 设计价值

这样用户不打开主界面,也能快速完成常用操作:

  • 快速设置 10 分钟后关机;
  • 快速设置 30 分钟后关机;
  • 快速取消关机;
  • 快速退出软件。

14.4 退出软件时提示

如果当前已经设置了自动关机,退出软件时应提示:

当前已经设置自动关机。

退出 Piggy Nap 不会取消 Windows 的自动关机计划。
如需取消,请先点击“取消自动关机”。

是否继续退出?

15. 开机自启动设计

15.1 默认状态建议

虽然第一版需要实现开机自启动,但不建议默认开启。

建议默认:

□ 开机自动启动 Piggy Nap

由用户主动勾选。

15.2 原因

原因说明
用户体验避免用户觉得软件偷偷自启动
安全感用户明确知道软件行为
降低误报自启动行为过于主动可能引发安全软件警惕
更专业符合正常桌面软件习惯

15.3 推荐实现方式

使用当前用户注册表 Run 项:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

写入项目:

PiggyNap = "软件exe完整路径"

15.4 Python 实现方向

使用 Python 内置模块:

import winreg

开启自启动:

winreg.SetValueEx(...)

关闭自启动:

winreg.DeleteValue(...)

15.5 注意事项

问题说明
不建议写入 HKEY_LOCAL_MACHINE可能需要管理员权限
建议写入 HKEY_CURRENT_USER当前用户生效,通常不需要管理员权限
路径中有空格exe 路径需要加引号
软件移动位置自启动路径可能失效

16. 测试模式设计

16.1 为什么需要测试模式

开发关机软件时,最怕的问题是:

调试按钮时真的把电脑关了。

因此建议加入测试模式。

16.2 测试模式开关

在配置文件中加入:

APP_TEST_MODE = True

或者:

ENABLE_REAL_SHUTDOWN = False

16.3 测试模式行为

当测试模式开启时,点击关机按钮不执行真实关机,只显示将要执行的命令。

例如:

测试模式:将执行 shutdown /s /t 600

如果勾选强制关机:

测试模式:将执行 shutdown /s /f /t 600

16.4 正式发布前

正式发布前必须确认:

APP_TEST_MODE = False

或者:

ENABLE_REAL_SHUTDOWN = True

17. 技术选型

17.1 Python 版本

建议使用:

Python 3.11 或 Python 3.12

不建议使用过旧版本,例如 Python 3.7、3.8。

17.2 GUI 框架

采用:

PySide6

选择 PySide6 的原因:

项目说明
官方属性Qt 官方 Python 绑定
授权LGPL,相对适合分发
API与 PyQt6 接近
Qt 版本Qt6
适合桌面软件

17.3 打包工具

采用:

PyInstaller

18. 工程目录结构

18.1 推荐目录

工程目录和文件名建议全部使用英文,避免中文路径导致打包、资源加载或命令行兼容问题。

piggy_nap/
│
├─ main.py
├─ requirements.txt
├─ README.md
│
├─ app/
│  ├─ __init__.py
│  ├─ main_window.py
│  ├─ shutdown_service.py
│  ├─ autostart_service.py
│  ├─ tray_service.py
│  ├─ reminder_service.py
│  ├─ time_utils.py
│  └─ config.py
│
├─ assets/
│  ├─ piggy_nap.ico
│  ├─ piggy_logo.png
│  └─ moon.png
│
├─ styles/
│  └─ pink_pig.qss
│
└─ build_scripts/
   └─ build_exe.bat

18.2 命名建议

类型建议
工程目录piggy_nap
exe 文件PiggyNap.exe
图标文件piggy_nap.ico
主样式文件pink_pig.qss
注册表键名PiggyNap

19. 模块设计

19.1 main.py

作用:

  • 创建 QApplication;
  • 加载 QSS 样式;
  • 创建主窗口;
  • 启动事件循环。

19.2 main_window.py

作用:

  • 主界面;
  • 按钮响应;
  • 时间选择;
  • 倒计时显示;
  • 托盘交互;
  • 开机自启动复选框;
  • 强制关机复选框。

19.3 shutdown_service.py

作用:

  • 设置自动关机;
  • 取消自动关机;
  • 根据是否强制关机拼接 shutdown 参数。

19.4 autostart_service.py

作用:

  • 设置开机自启动;
  • 取消开机自启动;
  • 检查当前是否已启用开机自启动。

19.5 tray_service.py

作用:

  • 创建系统托盘图标;
  • 创建托盘菜单;
  • 响应打开、快捷关机、取消关机、退出等操作。

19.6 reminder_service.py

作用:

  • 管理关机前提醒;
  • 在关机前 60 秒弹窗;
  • 提供“取消关机”和“知道了”按钮。

19.7 time_utils.py

作用:

  • 计算目标关机时间;
  • 计算剩余秒数;
  • 格式化倒计时文本。

19.8 config.py

作用:

  • 保存软件名称;
  • 保存版本号;
  • 保存注册表键名;
  • 保存测试模式开关;
  • 保存默认配置。

20. 核心代码逻辑示例

20.1 设置关机

import subprocess


def schedule_shutdown(seconds: int, force: bool = False, test_mode: bool = False) -> str:
    if seconds <= 0:
        raise ValueError("关机时间必须大于 0 秒")

    cmd = ["shutdown", "/s"]

    if force:
        cmd.append("/f")

    cmd.extend(["/t", str(seconds)])

    if test_mode:
        return "测试模式:" + " ".join(cmd)

    subprocess.run(cmd, check=True, shell=False)
    return "已设置自动关机:" + " ".join(cmd)

20.2 取消关机

import subprocess


def cancel_shutdown(test_mode: bool = False) -> str:
    cmd = ["shutdown", "/a"]

    if test_mode:
        return "测试模式:" + " ".join(cmd)

    subprocess.run(cmd, check=False, shell=False)
    return "已取消自动关机"

20.3 计算目标时间

from datetime import datetime, timedelta


def calculate_seconds_until(hour: int, minute: int) -> tuple[int, datetime]:
    now = datetime.now()

    target = now.replace(
        hour=hour,
        minute=minute,
        second=0,
        microsecond=0
    )

    if target <= now:
        target += timedelta(days=1)

    seconds = int((target - now).total_seconds())
    return seconds, target

20.4 格式化倒计时

def format_countdown(seconds: int) -> str:
    if seconds <= 0:
        return "00小时 00分钟 00秒"

    hours = seconds // 3600
    minutes = (seconds % 3600) // 60
    secs = seconds % 60

    return f"{hours:02d}小时 {minutes:02d}分钟 {secs:02d}秒"

21. requirements.txt

第一版依赖可以保持简单:

PySide6>=6.6.0

开发和打包时再安装:

pyinstaller

22. 打包发布方案

22.1 安装依赖

pip install PySide6 pyinstaller

22.2 打包命令

pyinstaller --onefile --windowed --icon=assets\piggy_nap.ico main.py

22.3 参数说明

参数说明
--onefile打包成单个 exe
--windowed运行时不显示黑色命令行窗口
--icon指定软件图标

22.4 输出文件

打包完成后,文件位于:

dist\main.exe

建议重命名为:

PiggyNap.exe

23. 开发阶段计划

阶段 1:最小可运行版本

目标:

  • 打开主窗口;
  • 快捷按钮可点击;
  • 测试模式显示将执行的命令;
  • 取消关机命令可测试。

功能:

功能状态
主窗口完成
10 分钟按钮完成
30 分钟按钮完成
1 小时按钮完成
2 小时按钮完成
取消关机完成
测试模式完成

阶段 2:真实关机命令接入

目标:

  • 关闭测试模式;
  • 接入真实 shutdown 命令;
  • 支持普通关机和强制关机切换;
  • 增加设置前确认弹窗。

阶段 3:自定义时间和倒计时

目标:

  • 支持选择具体时间;
  • 显示目标关机时间;
  • 显示剩余倒计时;
  • 每秒刷新。

阶段 4:UI 风格完善

目标:

  • 粉色小猪卡通风格;
  • 圆角按钮;
  • 原创图标;
  • 可爱但不影响理解的状态文案。

阶段 5:托盘功能

目标:

  • 最小化到托盘;
  • 托盘菜单;
  • 托盘中快捷关机;
  • 托盘中取消关机;
  • 托盘中退出软件。

阶段 6:开机自启动

目标:

  • UI 中增加开机自启动复选框;
  • 写入当前用户注册表 Run 项;
  • 支持取消开机自启动。

阶段 7:关机前提醒

目标:

  • 关机前 60 秒弹窗;
  • 弹窗中提供取消关机按钮;
  • 托盘状态下也能提醒。

阶段 8:打包测试

目标:

  • PyInstaller 打包;
  • Win10 测试;
  • Win11 测试;
  • 杀毒误报观察;
  • 不同路径运行测试;
  • 自启动路径测试。

24. 关键测试用例

24.1 关机功能测试

测试项预期结果
点击 10 分钟后关机Windows 设置 600 秒后关机
点击 30 分钟后关机Windows 设置 1800 秒后关机
点击 1 小时后关机Windows 设置 3600 秒后关机
点击 2 小时后关机Windows 设置 7200 秒后关机
设置具体时间正确换算为秒数
取消关机Windows 取消关机计划

24.2 强制关机测试

测试项预期命令
未勾选强制关机shutdown /s /t 秒数
勾选强制关机shutdown /s /f /t 秒数

24.3 时间逻辑测试

当前时间选择时间预期结果
20:0023:30今天 23:30
22:0021:30明天 21:30
23:5900:10明天 00:10

24.4 托盘测试

测试项预期结果
点击关闭按钮最小化到托盘
双击托盘图标打开主界面
托盘菜单点击打开打开主界面
托盘菜单点击 10 分钟后关机设置 600 秒后关机
托盘菜单点击取消关机执行 shutdown /a
托盘菜单点击退出软件退出

24.5 开机自启动测试

测试项预期结果
勾选开机自启动注册表写入成功
取消勾选注册表项删除成功
重启电脑软件自动启动
移动 exe 位置需要重新设置自启动

24.6 测试模式测试

测试项预期结果
开启测试模式不执行真实关机
点击 10 分钟后关机显示将执行的命令
点击取消关机显示将执行 shutdown /a
关闭测试模式执行真实系统命令

25. 风险与注意事项

25.1 强制关机风险

如果用户勾选:

强制关闭正在运行的程序

软件会执行:

shutdown /s /f /t 秒数

可能导致未保存内容丢失。

必须提醒用户提前保存:

  • 文档;
  • 代码;
  • PCB 工程;
  • 浏览器表单;
  • 下载任务;
  • 正在烧录或调试的工程。

25.2 软件退出不等于取消关机

Windows 的关机计划由系统执行。

因此:

退出 Piggy Nap 不会取消已经设置的 Windows 自动关机计划。

用户如果要取消,必须点击:

取消自动关机

25.3 杀毒软件误报

PyInstaller 打包的单文件 exe 有时可能被部分杀毒软件误报。

降低误报的方法:

  • 使用干净 Python 环境打包;
  • 不加入无关依赖;
  • 不使用可疑压缩壳;
  • 设置正规图标;
  • 设置版本信息;
  • 后续可考虑代码签名。

25.4 自启动路径失效

如果用户移动 exe 文件位置,注册表中的开机自启动路径可能失效。

解决方案:

移动软件后,重新勾选一次开机自启动。

26. 后续扩展方向

后续版本可以增加:

功能说明
睡眠模式支持定时睡眠
重启模式支持定时重启
注销模式支持定时注销
普通关机 / 强制关机记忆保存用户上次选择
关机前提醒时间可选30 秒 / 60 秒 / 3 分钟 / 5 分钟
白名单保护某些程序运行时不关机
定时任务模式使用 Windows 任务计划程序
安装包使用 Inno Setup
多主题粉色、蓝色、夜间模式
版本信息窗口显示版本、作者、项目说明
GitHub 发布开源或发布下载版本

27. 推荐最终技术路线

Python 3.11 / 3.12
        ↓
PySide6 / Qt6
        ↓
Piggy Nap 单窗口主界面
        ↓
粉色小猪卡通风格 UI
        ↓
快捷按钮 + 自定义时间选择
        ↓
普通关机 / 强制关机可选
        ↓
Windows shutdown 命令
        ↓
QTimer 刷新倒计时
        ↓
关机前 60 秒提醒
        ↓
QSystemTrayIcon 系统托盘
        ↓
winreg 开机自启动
        ↓
PyInstaller 打包 PiggyNap.exe

28. 结论

Piggy Nap 的项目方向已经明确:

中文名:小猪定时关机助手
英文名:Piggy Nap
技术路线:Python + PySide6
目标系统:Win10 / Win11 64 位
界面风格:粉色小猪卡通风格
核心功能:定时自动关机

新增建议中,最值得纳入第一版的是:

  1. 使用 Piggy Nap 作为正式英文名;
  2. 工程目录和文件名全部使用英文;
  3. 图标采用原创睡觉小猪设计;
  4. 增加普通关机 / 强制关机复选框;
  5. 增加关机前 60 秒提醒;
  6. 托盘菜单加入快捷关机入口;
  7. 开机自启动默认关闭,由用户主动勾选;
  8. 开发阶段加入测试模式,避免误关机。

这样 Piggy Nap 不只是一个能用的关机小工具,而是一个有完整产品感、可打包分发、后续可持续迭代的小型桌面软件项目。


----------


重建.venv环境

在这里插入图片描述

# 关掉 PyCharm,避免占用 .venv
cd C:\Users\CQJY\Desktop\PythonProject
Remove-Item -Recurse -Force .\.venv

# 用你已安装的 3.13/64 重建
py -3.13 -m venv .venv

# 快速自检
.\.venv\Scripts\python.exe -V
.\.venv\Scripts\python.exe -c "import struct,platform;print('arch=',struct.calcsize('P')*8,'os=',platform.platform())"

# 重新装依赖
.\.venv\Scripts\python.exe -m pip install -U pip
.\.venv\Scripts\python.exe -m pip install PyQt6 pyserial  # 串口建议用 pyserial,更稳

接下来按这个顺序测,先保持默认测试模式,不会真实关机。

# 1. 安装依赖
.\.venv\Scripts\python.exe -m pip install -r requirements.txt

# 2. 重新生成图标素材
.\.venv\Scripts\python.exe build_scripts\generate_assets.py

# 3. 语法检查
.\.venv\Scripts\python.exe -m compileall -q .

# 4. 启动程序
.\.venv\Scripts\python.exe main.py

在这里插入图片描述

慢的主要原因是 PySide6 元包会下载很大的 PySide6_Addons,你截图里这个包有 168.8 MB,但 Piggy Nap 目前只用 QtCore / QtGui / QtWidgets,不需要 Addons。

我已经把依赖改成更轻的:

PySide6-Essentials>=6.6.0

现在这样做:

# 1. 先 Ctrl+C 停掉当前下载

# 2. 安装精简运行依赖,建议使用国内镜像
.\.venv\Scripts\python.exe -m pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

# 3. 启动测试
.\.venv\Scripts\python.exe main.py

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

为什么打包后执行exe报错。
在这里插入图片描述

原因是打包时没有用到你的 .venv 环境。原来的 build_exe.bat 直接调用 pyinstaller,可能命中了系统 PATH 里的另一个 PyInstaller,那个环境里没有 PySide6,所以 exe 运行时报:

ModuleNotFoundError: No module named 'PySide6'

我已修复脚本:现在会优先使用项目内的 .venv\Scripts\python.exe 来运行 PyInstaller。我也重新打包验证了,日志里已经显示:

Python environment: D:\Piggy_Nap\piggy_nap\.venv
Processing standard module hook 'hook-PySide6.py'

你现在重新执行:

cd D:\Piggy_Nap\piggy_nap
.\build_scripts\build_exe.bat
.\dist\PiggyNap.exe

如果还不放心,可以先确认打包环境:

.\.venv\Scripts\python.exe -c "import PySide6; print(PySide6.__file__)"
.\.venv\Scripts\python.exe -m PyInstaller --version

补充一点:pip show PySide6 找不到不代表异常,因为我们为了减少下载体积安装的是 PySide6-Essentials,但它提供的 Python 模块仍然叫 PySide6


桌面状态栏的图标是Python
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


下载

更多推荐