用 DutyCall 让值日提醒变得“大声”
在学校的教室里,最头疼的事情之一大概就是值日提醒了。虽然有值日表贴在墙上,但总有人“视而不见”,最后只能靠班长或老师一遍遍地催促。
为了解决这个痛点,我开发了一个简单但高效的小工具 —— DutyCall。它能将值日表数字化,并在设定的时间自动在教室的大屏幕(如希沃一体机)上弹出提醒,并用语音大声念出今天的值日人员名单。
🌟 核心功能
- 数字化值日表:通过简单的 JSON 配置文件,轻松定义每天的值日人员及其负责的工作。
- 定时自动提醒:无需手动操作,程序会在预设的时间点(例如放学前)自动激活。
视觉+听觉双重提醒:
- 视觉:全屏弹出精致的 HTML 表格,清晰展示今日值日名单。
- 听觉:集成 TTS(文本转语音)功能,大声播报值日人员,确保没人能“装没听见”。
- 针对一体机优化:界面简洁,支持全屏最大化显示,非常适合在 Windows 系统的交互式白板上运行。
🛠️ 技术实现
DutyCall 采用了轻量级且强大的技术栈,保证了运行的稳定性:
- GUI 框架:使用
PySide6(Qt for Python) 构建。通过QMainWindow实现了响应式的界面,并利用QTimer实现了精准的定时任务调度。 - 动态界面:为了让值日表看起来更现代,我直接在 UI 中使用了 HTML/CSS 渲染表格,实现了圆角、阴影和优雅的间距,让提醒界面不再像个枯燥的弹窗。
- 语音合成:通过独立的
tts模块,将值日名单动态转换为语音流,实现真正的“Call”功能。 - 灵活配置:所有数据均由
config.json驱动,无需修改代码即可快速调整值日名单或提醒时间。
⚙️ 配置示例
配置文件为 launcher.exe (或 launcher.py) 所在目录下的 config.json,在开始使用之前需要创建。
只需要定义好星期、工作别名和提醒时间即可,以下是一个示例:
{
"schedule": {
"0": [ ["1", "张三"], ["2", "李四"] ] // 星期一的值日安排
},
"workAlias": {
"1": "课室/拖地",
"2": "黑板/讲台"
},
"reminder": {
"tts": true,
"times": [[16, 20]], // 下午 4:20 提醒
"alive_time": 45 // 界面显示 45 秒
}
}🚀 如何使用
- 点击进入项目的 Releases 页面。
- 在最新版本(Latest)的 Assets 中下载编译好的压缩包。
- 解压后,修改同目录下的
config.json填入你们班级的值日表。 - 双击运行程序,它将在后台静默等待,到点准时提醒!
- 建议给它设置一个开机启动项,将
launcher.exe的快捷方式拖入启动文件夹中。
🌈 结语
DutyCall 的初衷是用技术解决生活中的小琐事。它不仅减轻了管理者的负担,也给枯燥的值日工作带来了一点点数字化的小乐趣。
如果你也想给自己的教室升级一套“自动化值日提醒系统”,欢迎尝试!
项目地址:GitHub - This-is-XiaoDeng/duty-call
许可证:GPL-3.0