用 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 秒
    }
}

🚀 如何使用

  1. 点击进入项目的 Releases 页面
  2. 在最新版本(Latest)的 Assets 中下载编译好的压缩包。
  3. 解压后,修改同目录下的 config.json 填入你们班级的值日表。
  4. 双击运行程序,它将在后台静默等待,到点准时提醒!
  5. 建议给它设置一个开机启动项,将 launcher.exe快捷方式拖入 启动 文件夹中。

🌈 结语

DutyCall 的初衷是用技术解决生活中的小琐事。它不仅减轻了管理者的负担,也给枯燥的值日工作带来了一点点数字化的小乐趣。

如果你也想给自己的教室升级一套“自动化值日提醒系统”,欢迎尝试!

项目地址GitHub - This-is-XiaoDeng/duty-call
许可证:GPL-3.0

最后修改于:2026年05月03日 17:32

添加新评论