上班鼓励器_桌宠版

0 阅读6分钟

当前版本 v1.2.31 | Windows 桌面浮窗 + 桌面宠物 | 本文所有配图均来自项目真实运行截图与素材,路径相对于本文件,可整体拷贝 docs/ 目录。

头图:桌宠常驻桌面一角,会跟着你的键盘和鼠标做动作。


请添加图片描述

本文配图索引

图文件说明
头图images/hero.png产品横幅,展示三只形象
七只形象images/characters.png全形象一览卡片
右键菜单images/menu.png形象选择页实拍
打字实测(男孩)images/typing_boy.png12 帧 PrintWindow 连拍
打字实测(女孩)images/typing_girl.png12 帧 PrintWindow 连拍
主窗口images/main_window.png实时工资浮窗界面
图标images/logo.png应用图标素材

一、这是什么

「上班鼓励器」是一个双形态的 Windows 小工具:一个实时算工资的浮窗主窗口,加一个 140×140 的桌面宠物。宠物挂在屏幕角落,会镜像你的键鼠操作——你敲键盘它就打字,你点鼠标它就伸手,戳它一下它会端起杯子喝咖啡。

项目说明
运行形态主浮窗(可隐藏) + 独立分层桌宠窗口(始终置顶、可拖动)
技术栈Python + pywebview(WebView2) + WinForms 自绘右键菜单 + 低级键鼠钩子
打包PyInstaller(免安装目录) + Inno Setup(安装程序)
数据%LOCALAPPDATA%\上班鼓励器\work_data.json;EXE 同级存在同名文件时走便携模式
诊断日志%TEMP%\gotowork_pet.log,启动行会打印 version=x.y.z tag=...
单实例内核命名互斥体;重复启动会唤起已运行窗口,不会开出第二个

请添加图片描述

图标素材(256×256)。


二、七只形象,右键随时切换

请添加图片描述

七只形象全部为项目运行时实拍(PrintWindow 抓帧),已统一抠底、等高排版。

key名称动画形式备注
dino恐龙噜噜分层 PNG最早的一只,头像素材为 lulu2_64.png(95×128,非 80 方图)
labubuLabubu分层 PNG兔耳宇航服
dance上班噜噜59 帧图集三角波往复循环,骑小车
hajimi哈基米分层 PNG戴耳机的橘猫
work认真工作分层 PNG圆眼镜 + 书本的橘猫
boy男孩9 帧整帧图集v1.2.29 参考女孩重制的配对版:棕短发、粗黑圆框眼镜、奶油米色卫衣
girl女孩9 帧整帧图集同风格 3D 黏土 Q 版办公女孩

男孩 / 女孩走的是「整帧精灵表 + 事件驱动状态机」,与其余五只的分层动画是两套机制。新增这类形象时必须同步把 key 加进 app.py 的 _PET_FRAME_ANIM,否则键鼠镜像与右键命中形状都会失效。

右键菜单

请添加图片描述

右键菜单第 1 页(形象选择),当前项带 ✓ 标记。截图摄于 5 形象时期,现在是 7 只;第 0 页为「显示/隐藏主窗口 · 切换卡通人物 › · 退出程序」。

菜单是自绘无边框 WinForms 窗体,分两页、带 hover 高亮;翻开下一页时会按新页高度重算圆角 Region。低级鼠标钩子只吞掉落在人物身上的右键,其余位置照常走系统菜单。


三、会跟着你动的桌宠

宠物的动作由系统级键鼠钩子驱动,经队列投递到宠物页的 boyActivity(type / mouse / poke),再由页面状态机切帧:

  • 敲键盘 → 打字循环(抬手 / 落键两拍);
  • 点鼠标 → 伸手点鼠标(带 260ms 冷却,避免连点把序列无限重启);
  • 戳一下人物 → 端杯喝咖啡(男孩配置为 coffee:false,不做这个动作);
  • 视线跟随 → 眼球按鼠标位置偏移;眨眼、拖动倾斜、呼吸微动常驻。

v1.2.31:把「敲键盘」做得看得出来

早期版本打字帧 1–4 与待机帧只有 1.5%–3% 的像素差异,双手几乎不动;舞台实际只有 83.75×134px,手指级动作在屏幕上不过十来个像素,95ms 的四帧轮播只是把「几乎没动」高速闪了一遍。

最终没有改任何图集,而是加了一层运行时可读的敲键节拍:

手段实现
落键顿挫#typebob 抬手上浮 1.5px、落键下沉 3.5px + ≤1° 前倾,110ms 过渡;全程只用位移与旋转,绝不缩放(避免出现忽大忽小)
键盘高光#typefx 左右各一个暖白光晕,落键那一侧亮 380ms,左右交替
节拍TYPE_SEQ 四步两拍(210 / 150ms,约 1.4Hz):左抬 → 左落 → 右抬 → 右落
隔离换形象立刻收势;不再占用拖动倾斜层,不与拖宠物打架

请添加图片描述 男孩:模拟真实敲键时的 12 帧连拍。可见键盘暖白高光左右交替、人物有落键顿挫。 请添加图片描述

女孩:同一套节拍,高光位置对她的键盘同样贴合。

运行时实测(PrintWindow 连拍 + 像素差量化):

指标静止打字
相邻帧可见差异0.03–0.06%11.4–11.5%(峰值 17%)
键盘区域平均亮度137.5145–159
键盘区域峰值亮度217249–253

男孩、女孩各 12 帧验收:无黑屏、白边、绿边、裁切或变形;切到恐龙后模拟敲键差异仅 1–2%(它自身的呼吸动画),其余形象不受影响。复测脚本见 _tools/verify_typing_runtime.py。


四、主窗口(与浮窗版的关系)

请添加图片描述 主窗口:今日已赚、下班倒计时、工时进度与股票持仓。

桌宠版是在原「桌面浮窗版」之上叠加的宠物层,浮窗功能全部保留:

  • 💰 按时薪 × 已工作工时(扣午休)每秒刷新「今日已赚」,含下班倒计时、工时进度、本月累计;
  • 📈 A 股持仓每 5 秒刷新行情,当日浮动盈亏自动并入「今日已赚」,红涨绿跌;
  • 🕶️ 老板键默认 Alt + ~,可在设置里录制任意组合或关闭,全局生效;
  • ⚙️ 时薪、上下班时间、请假日、小数位、主题等配置本地持久化。

更完整的浮窗功能说明见仓库根目录 上班鼓励器_产品介绍.md 与 APP_FEATURES.md(那份文档引用的 screenshots/ 图为旧界面)。


五、安装与运行

# 安装版(当前交付物)
installer\上班鼓励器_Setup_v1.2.31.exe

# 免安装版
dist\上班鼓励器\上班鼓励器.exe

# 源码版
pip install -r requirements.txt
python app.py

静默安装(Git Bash 下必须关掉路径转换,否则参数会被改写):

MSYS2_ARG_CONV_EXCL="*" ./installer/上班鼓励器_Setup_v1.2.31.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART

安装程序 post-install 会启动应用并占用文件锁,静默安装命令建议后台执行;用 explorer.exe "<exe 路径>" 启动 GUI 才不会被会话结束时回收。


六、常见问题

现象原因与处理
源码版启动约 2s 静默退出、stdout 全空单实例锁:安装版进程还在跑,先 Stop-Process
改了配置却不生效打包版读 %LOCALAPPDATA%\上班鼓励器\work_data.json,与源码目录那份互不影响
不知道跑的是哪个版本看 %TEMP%\gotowork_pet.log 启动行的 version= / tag=
抓宠物窗截图全黑分层 / Chromium 合成窗口要用 PrintWindow(hwnd, memDC, 2),ImageGrab 的 BitBlt 抓不到内容
char:<key> 第一次没切成功偶发超时,重跑一次并核对日志 char -> 最后一条