
开源地址:https://gitee.com/beautiful_corridors/niuma
Python 工作量监控大屏
基于 Python + PySide6 开发的实时工作量监控桌面应用,提供美观的大屏显示界面。
功能特性
📊 实时监控
- 键盘输入统计: 实时统计按键次数,显示平均和峰值每分钟按键数
- 鼠标移动追踪: 监控鼠标移动距离,自动转换为厘米单位
- 应用使用时间: 追踪每个应用程序的使用时长和切换频率
- 工作时长统计: 显示总工作时间和生产力指数
🎨 界面设计
- 现代化UI: 采用 PySide6 实现的毛玻璃效果和渐变背景
- 响应式布局: 自适应不同屏幕尺寸
- 实时动画: 数据更新时的平滑过渡效果
- 深色主题: 护眼的深色配色方案
⚡ 性能优化
- 低资源占用: 高效的多线程数据采集
- 实时更新: 1秒间隔的数据刷新
- 跨平台支持: Windows、macOS、Linux
安装和运行
环境要求
- Python 3.8+
- pip
方法一:直接运行
```bash
克隆或下载代码
安装依赖
pip install -r requirements.txt
运行应用
python main.py
```
方法二:安装为包
```bash
安装
pip install -e .
运行
work-monitor
```
方法三:创建可执行文件
```bash
安装 PyInstaller
pip install pyinstaller
创建可执行文件
pyinstaller --onefile --windowed main.py
可执行文件在 dist/ 目录中
```
依赖说明
核心依赖
- PySide6: Qt6 的 Python 绑定,用于 GUI 界面
- pynput: 跨平台的键盘鼠标监控库
- psutil: 系统和进程信息获取库
平台特定依赖
- Windows: pywin32 (用于获取活动窗口)
- macOS: PyObjC (可选,用于更好的窗口检测)
- Linux: xdotool (可选,用于窗口检测)
平台兼容性
Windows
- ✅ 完全支持所有功能
- ✅ 自动检测活动窗口
- ✅ 键盘鼠标监控
macOS
- ✅ 支持基本功能
- ⚠️ 需要授予辅助功能权限
- ⚠️ 活动窗口检测可能需要额外设置
Linux
- ✅ 支持基本功能
- ⚠️ 需要安装 xdotool: `sudo apt-get install xdotool`
- ⚠️ 某些桌面环境可能需要额外配置
使用说明
主界面功能
- 键盘监控卡片: 显示总按键数、平均速度、峰值速度
- 鼠标监控卡片: 显示移动距离、平均速度、总像素数
- 工作时长卡片: 显示工作时间、活跃应用数、生产力指数
- 应用排行榜: 按使用时长排序的应用列表
快捷键
F11
: 切换全屏模式F5
: 手动刷新数据
控制按钮
- 重置数据: 清空所有统计数据
- 全屏: 切换全屏显示模式
权限设置
Windows
- 通常无需额外设置
- 某些杀毒软件可能需要添加信任
macOS
- 系统偏好设置 → 安全性与隐私 → 隐私
- 选择"辅助功能"
- 添加 Python 或终端应用到允许列表
- 重启应用
Linux
```bash
Ubuntu/Debian
sudo apt-get install xdotool
如果遇到权限问题,可能需要添加用户到 input 组
sudo usermod -a -G input $USER
```
开发和自定义
项目结构
```
work-monitor/
├── main.py # 主程序入口
├── monitor.py # 监控核心逻辑
├── ui_components.py # UI 组件
├── requirements.txt # 依赖列表
├── setup.py # 安装配置
└── README.md # 说明文档
```
自定义配置
修改监控间隔
在 `monitor.py` 中调整:
```python
应用监控间隔(秒)
time.sleep(1) # 默认1秒
界面更新间隔在 main.py 中
self.update_timer.start(1000) # 默认1000毫秒
```
自定义界面样式
在 `main.py` 中修改 QSS 样式:
```python
self.setStyleSheet("""
QMainWindow {
background: qlineargradient(x1:0, y1:0, x2:1, y2:1,
stop:0 #667eea, stop:1 #764ba2);
}
""")
```
添加新的监控指标
- 在 `monitor.py` 中添加数据收集逻辑
- 在 `main.py` 中添加显示组件
- 更新 `update_display` 方法
故障排除
常见问题
-
ImportError: No module named 'PySide6'
```bash
pip install PySide6
```
-
权限被拒绝 (macOS)
- 检查系统偏好设置中的辅助功能权限
- 重启终端和应用
-
鼠标/键盘监控不工作
- 检查是否有其他程序占用输入设备
- 尝试以管理员权限运行
-
应用检测不准确
- Windows: 确保 pywin32 正确安装
- Linux: 安装 xdotool
- macOS: 检查权限设置