这是一个专为课堂教学设计的随机抽号程序,支持多种抽取模式和语音叫号功能,适用于Windows 7及以上操作系统。该程序采用PySide2构建图形界面,具有现代化的UI设计和稳定可靠的运行机制。
- 全随机模式:完全随机抽取学生号码
- 学生讲题模式(正序):按顺序从前往后抽取,确保每个学生都有机会
- 学生讲题模式(倒序):按顺序从后往前抽取,提供更多样化的抽取方式
- 优化随机模式:基于权重算法的智能抽号,防止连续点名和长期遗漏
- 支持中文语音播报抽取结果
- 可自定义叫号文本模板
- 兼容Windows 7及以上系统
- 可开关语音功能
- 可设置号码范围(最小值、最大值)
- 可调节动画延迟时间和结果显示时间
- 支持通过图形界面或配置文件进行设置
- 支持导入学生名单(CSV/XLSX格式)
- 托盘图标常驻,方便随时调用
- 全局快捷键触发抽号(Alt键)
- 简洁明了的结果显示窗口
- 支持Esc键快速关闭结果窗口
- 守护进程保障,自动重启异常退出的主程序
- 数据持久化,记录历史抽号统计
- 日志记录便于问题排查
- 集成更新检查工具,支持自动下载更新
- 支持PyInstaller和Nuitka两种打包方式
- 镜像站下载加速
确保系统已安装 Python 3.6+ 和必要的依赖库(见 requirements.txt)
启动器提供图形界面用于配置各项参数:
- 编辑号码范围(最小值、最大值)
- 设置动画延迟和结果显示时间
- 选择抽取模式
- 配置语音叫号功能
- 导入学生名单(CSV/XLSX格式)
- 选择并启动不同版本的主程序
主程序负责实际的抽号功能:
- 通过快捷键(Alt)触发抽号
- 显示抽号结果
- 播放语音叫号(如果启用)
- 支持三秒变动模式和直接显示模式
守护进程用于保障主程序的稳定性:
- 监控主程序运行状态
- 自动重启异常退出的主程序
- 限制重启次数防止无限重启
更新程序提供便捷的版本管理:
- 自动检查新版本
- 支持从Gitee或GitHub下载更新
- 可选择PyInstaller或Nuitka版本
- 提供镜像站下载加速
支持导入CSV或Excel文件格式的学生名单:
- CSV文件应包含'学号'、'姓名'列
- Excel文件第一列为学号,第二列为姓名
- 抽号时显示学生姓名而非号码
配置存储在 config.ini 文件中:
[lottery]
min_number = 1 # 最小号码
max_number = 48 # 最大号码
delay = 1 # 动画延迟(秒)
keep = 3 # 结果保持时间(秒)
student_mode = 1 # 抽取模式(0=全随机,1=正序,2=倒序)
enable_voice = 0 # 是否启用语音叫号(0=关闭,1=开启)
voice_template = 请{}号同学回答问题 # 语音叫号模板可以通过修改 voice_template 来定制叫号内容:
- 使用
{}作为号码占位符 - 示例:
请{}号同学起立{}号同学请回答现在轮到第{}号同学
程序支持通过命令行参数覆盖配置文件中的设置:
--min-number: 设置最小号码--max-number: 设置最大号码--delay: 设置延迟秒数--keep: 设置保持时间秒数--student-mode: 设置抽取模式 (0=全随机, 1=正序, 2=倒序)--enable-voice: 启用语音叫号 (0=关闭, 1=开启)--voice-template: 设置语音叫号模板,使用{}作为号码占位符
- Windows 7 或更高版本
- Python 3.6+
- 依赖库详见 requirements.txt
- 使用 PySide2 构建现代化图形界面
- 利用 Windows SAPI 实现 TTS 语音功能
- 支持多版本程序管理
- 日志记录便于问题排查
- 兼容打包为 exe 文件运行
- 优化随机算法防止连续点名和长期遗漏
- 守护进程保障程序稳定性
- 运行
launcher.py启动配置界面 - 设置所需参数并保存,或导入学生名单
- 选择程序版本并启动主程序
- 在需要抽号时按下 Alt 键即可
- 可使用
update.py检查并下载程序更新
main.py: 主程序,实现抽号逻辑和UI界面launcher.py: 启动器,提供图形界面配置daemon.py: 守护进程,保障主程序稳定性update.py: 更新程序,自动检查和下载更新config.ini: 配置文件students.json: 学生名单数据lottery_data.pkl: 抽号统计数据optimized_sampler_state.pkl: 优化抽样器状态数据logs/: 日志文件目录