From 555ba64f7add0b9a42ddf62a45151a6e92cbff18 Mon Sep 17 00:00:00 2001 From: a13zhy <2271412904@qq.com> Date: Sat, 26 Sep 2026 20:42:58 +0800 Subject: [PATCH] Revise README for version 6.8 updates and features Updated README to reflect changes in version 6.8, including migration to PyQt5, new features, and project structure. --- README.md | 238 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 144 insertions(+), 94 deletions(-) diff --git a/README.md b/README.md index da4dc76..aa6ca51 100644 --- a/README.md +++ b/README.md @@ -1,116 +1,152 @@ +# A13Rollcall V6.8|第六代A13引擎 PyQt重构版 +> 🎲 A13Rollcall V6.8|第六代A13抽取引擎|课堂点名抽背系统 +[![GitHub stars](https://img.shields.io/github/stars/a13zhy/a13rollcall?style=flat‑square)](https://github.com/a13zhy/a13rollcall/stargazers) +[![GitHub forks](https://img.shields.io/github/forks/a13zhy/a13rollcall?style=flat‑square)](https://github.com/a13zhy/a13rollcall/fork) +[![Python Version](https://img.shields.io/badge/python‑3.9+‑3776AB?style=flat‑square)](https://www.python.org/) +[![Release](https://img.shields.io/github/v/release/a13zhy/a13rollcall?style=flat‑square)](https://github.com/a13zhy/a13rollcall/releases) +[![License](https://img.shields.io/badge/license‑NonCommercial‑blue?style=flat‑square)](#📄-开源许可) +🔥 **本地离线PyQt5 GUI点名抽背工具|零广告|零氪金|无捆绑|全部数据本地存储** +> ⚠️ V6.8 由Tkinter迁移至PyQt5重构,现代化桌面窗口,Windows10/11体验大幅提升;**完全兼容V6.2旧版数据**,直接迁移旧班级文件即可使用。专为中小学课堂抽背、随机点名场景打造。 -# a13rollcall -> 🎲 A13Rollcall|第六代A13引擎 Tkinter课堂点名抽背神器 - -[![GitHub stars](https://img.shields.io/github/stars/a13zhy/a13rollcall?style=flat-square)](https://github.com/a13zhy/a13rollcall/stargazers) -[![GitHub forks](https://img.shields.io/github/forks/a13zhy/a13rollcall?style=flat-square)](https://github.com/a13zhy/a13rollcall/fork) -[![Python Version](https://img.shields.io/badge/python‑3.8+-3776AB?style=flat-square)](https://www.python.org/) -[![Release](https://img.shields.io/github/v/release/a13zhy/a13rollcall?style=flat-square)](https://github.com/a13zhy/a13rollcall/releases) -[![License](https://img.shields.io/badge/license‑NonCommercial‑blue?style=flat-square)](#📄-开源许可) - -🔥 **本地离线GUI点名工具|零广告|零氪金|无捆绑|纯本地运行** - -> ⚠️ 本项目是 **Tkinter图形桌面程序**,运行弹出可视化窗口,**不是黑乎乎的控制台命令行工具!** - -老师点名纠结半天选谁? -学生上课开启摸鱼模式,内心疯狂祈祷「千万别点我」🙏。 - -交给自研**第六代A13抽签引擎**,把命运交给算法,拒绝主观偏心。 -随机点名、课堂抽背、悬浮快捷小浮窗、全套快捷键,课堂整活神器就位✨。 +老师上课点名反复纠结,怕偏心、怕重复;学生上课走神,寄希望于“不会抽到我”。交给**第六代A13智能抽取引擎**,算法接管抽签,消除主观偏好,兼顾公平与薄弱学生强化练习。 --- -## 💥 课堂两大史诗级痛点,谁懂啊家人们 -- 👨‍🏫 **老师侧|点名精神内耗** -每次提问疯狂纠结,点A怕偏心,点B刚点过,选择困难直接犯,点名十分钟,讲课五分钟。 -- 👩‍🎓 **学生侧|摸鱼侥幸玄学** -低头走神,表面听课实则神游天外,坚信自己就是那个永远不会被抽到的幸运儿。 +## 💥 课堂真实痛点 +- 👨‍🏫 **老师痛点**:点名选择困难,纠结选谁浪费课堂时间;很难直观看到哪位学生被抽查少、哪些课文抽查频次不足;缺少课堂轮次记录,课后无法复盘本节课抽查情况。 +- 👩‍🎓 **学生痛点**:存在侥幸心理,指望永远不被点到;薄弱学生被抽到概率偏低;背诵练习缺少完整统计追溯。 +- 📊 **旧版短板(V6.2)**:Tkinter界面老旧;缺少轮次历史记录;统计只有简单表格,无可视化图表;插件系统能力有限;部分设置项仅UI展示没有实际生效;缺少撤销重做、分组抽取等实用课堂能力。 -`a13rollcall` 登场! -> 抛开主观印象,算法说了算,人人都有“中奖”概率,击碎摸鱼幻想,拯救老师选择困难症。 +**V6.8 针对性解决全部上述痛点。** --- -## ✨ 项目核心特性 -### 🎲 第六代 A13 自研抽签引擎 -拒绝地摊伪随机算法! -- ✅ 会话内防重复逻辑,减少“天选倒霉蛋”连续上榜 -- ✅ 兼顾点名、抽背题库双重随机抽取 -- ✅ 会话状态记忆,概率分配更均衡,拒绝长期透明人 +## ✨ V6.8 核心新特性(对比V6.2) +### 🎲 第六代 A13 智能抽取引擎(增强) +- ✅ 动态权重系统升级:背诵差、抽取少的学生自动提升被抽中概率,兼顾公平+补差训练 +- ✅ **课堂轮次完整记录**:每一轮抽取完整存档,可查看历史轮次、恢复上一轮/指定轮次抽取现场,复盘整节课 +- ✅ 课文维度统计:统计每一篇课文被抽查频次,避免总盯着少数课文抽 +- ✅ 会话防重复 + 全局权重两套模式自由切换 +- ✅ 抽取记录持久保存,重启程序不会丢失本节课历史 +- ✅ 抽取时随机课文与抽取学生同步展示 -### 🖥️ Tkinter 原生图形界面 -不用浏览器,打开直接窗口交互: -- 🖼️ 主点名窗口,抽签效果可视化 -- 🪟 **悬浮快捷抽取浮窗**,上课缩成小窗口,不遮挡课件PPT,随用随点 -- ⌨️ **全套快捷键绑定**,手不用碰鼠标,键盘直接完成抽签、重置、切换模式 +### 🖼️ PyQt5 全新现代化UI +- ✅ 完整重写界面,圆角卡片、阴影、动画效果,适配教室投影仪明暗双主题 +- ✅ Ctrl+鼠标滚轮全局界面缩放,适配不同分辨率、投影大屏 +- ✅ 悬浮小浮窗保留,不遮挡PPT课件,快捷一键抽取 +- ✅ 全局统一现代化错误弹窗,异常堆栈一键复制,便于反馈BUG +- ✅ 设置修改后**右上角“需要重启”提示按钮**,一键关闭重启程序 -### 🧙‍♂️ 傻瓜式新手配置向导 -不会改配置文件?不用慌! -向导一步一步带你设置参数,小白也能零门槛上手。 +### 📈 专业统计可视化模块 +- ✅ 饼图:背诵状态分布(已背熟/未背熟/未抽查) +- ✅ 柱状图:抽取次数Top排行、积分排行、课文抽查频次统计 +- ✅ 抽取记录表格:时间、学生、课文、轮次、背诵状态完整日志 +- ✅ 支持导出统计报表,用于课后教学复盘 +- ✅ 轮次选择器:加载历史轮次、恢复至某一轮、删除无效轮次 -### 📂 数据持久化,搬家超方便 -- `students.txt` / `texts.txt` 存放名单和抽背题库 -- INI配置文件保存全部设置,关掉程序参数不丢失 -- 纯文本格式,复制粘贴就能备份、切换不同班级,迁移零成本 +### 🧩 强大插件生态(V6.8重大升级) +- ✅ 可视化插件打包工具:拖拽式页面编辑器,不用手写复杂配置,可视化开发插件UI +- ✅ 插件执行环境预注入常用库(`datetime/json/os/random/re`等),插件代码减少重复import +- ✅ 插件管理页面全面现代化,插件统计卡片,一键打开打包工具与开发文档 +- ✅ 修复插件安装程序BUG;支持`.arcx`/`.arcxpkg`两种插件格式 +- ✅ 全局异常捕获,插件报错不会造成主程序闪退 -### ⚡ 极致轻量化 -纯Python标准库开发,**零第三方pip依赖**。 -支持打包exe,没装Python的电脑双击直接跑。 +### 🛠️ 课堂实用功能集合 +1. **撤销 / 重做**:标记背诵状态、重置抽取、修改积分都支持多级撤销(最多50步),快捷键`Ctrl+Z`/`Ctrl+Y` +2. **分组抽取**:对学生自定义分组,可以只针对某一组执行抽取,适合分层教学 +3. **自动保存**:可自定义自动保存间隔,防止电脑断电丢失课堂数据 +4. **课文列表右键菜单**:新增、编辑、上下移动、删除课文,无需手动修改txt +5. **全套快捷键扩充**:切换课文、切换权重模式、缩放、撤销重做全部支持键盘操作 +6. **系统托盘支持**:关闭窗口最小化托盘,后台继续运行,上课不占用任务栏 -> ⚠️避坑提醒:txt文件务必保存为**UTF‑8编码**,防止中文乱码;不要乱留空行,不然会抽中“空气同学”😂 +### 📂 数据与兼容性 +- ✅ **完全兼容V6.2旧版数据**:直接读取旧版`students.txt`、`texts.txt`、ini配置,平滑升级 +- ✅ 配置、学生数据、课文、轮次历史本地JSON持久化 +- ✅ 依旧支持文本格式手动编辑备份班级名单、题库 +- ✅ 严格校验UTF‑8编码,自动过滤空行脏数据,防止“抽到空气同学” + +### ⚙️ 设置系统重构 +- ✅ 清理旧版本冗余设置项,删除仅展示无实际逻辑的无效选项 +- ✅ 动画效果设置完整生效:抽取动画、结果动画、过渡动画开关、自定义动画时长、缓动函数 +- ✅ 大量新增可配置项:自动保存周期、状态栏开关、托盘行为、图表样式、插件沙箱策略等 +- ✅ 设置区分「立即生效」和「需要重启生效」,修改重启项右上角弹出提醒按钮 --- ## 🚀 快速上手 ### 环境依赖 -- Python `3.8` 及以上 -- Windows官方Python安装包自带Tkinter,无需额外安装组件 - -**命令行启动** +- Python `3.9`及以上 +- 依赖:`PyQt5` ```bash -# 直接启动主图形界面 -python main.py - -# 第一次玩,优先跑向导配置 -python wizard_launcher.py +pip install PyQt5 ``` -> 执行后弹出图形窗口,**不是黑框里面敲字操作!** -**懒人双击启动** -直接双击项目文件夹内的 `main.py` 即可运行。 +**运行程序** +```bash +# 主程序启动 +python main_qt.py -📦 不想装Python? -去 [Releases](https://github.com/a13zhy/a13rollcall/releases) 下载打包好的exe,双击即玩。 +# 新手配置向导 +python wizard_launcher.py -**准备你的班级数据** -1. 修改 `students.txt`,一行一个学生姓名。 -2. 修改 `texts.txt`,填入抽背题目,不用抽背直接清空。 +# 可视化插件打包工具 +python arcx_packager.py +``` +> 运行后弹出GUI窗口,**非控制台操作**。 + +📦 不想安装Python:前往 [Releases](https://github.com/a13zhy/a13rollcall/releases) 下载打包好的EXE安装包,Windows直接双击使用。 + +### 班级数据准备 +1. 旧版迁移:直接复制V6.2的`students.txt`、`texts.txt`到程序目录,启动自动加载。 +2. 新建班级: + - 在软件内「学生管理」批量粘贴名单,一行一名学生 + - 在「课文管理」添加抽背课文;不需要抽背则不添加课文,自动进入纯点名模式 --- -## ⚙️ 可玩的自定义配置 -全部可以在向导界面调整,自动存入ini配置: -- 单次抽取多少人,单人拷问 / 批量拷打自由切换 -- 会话去重开关:开启尽量雨露均沾,关闭允许反复“中奖” -- 悬浮浮窗开关、窗口大小位置记忆 -- 名单、题库文件路径自定义 +## ⌨️ 常用快捷键汇总V6.8 +| 快捷键 | 功能 | +|---|---| +| 空格 | 开始抽取 | +| `Ctrl+Z` | 撤销操作 | +| `Ctrl+Y` / `Ctrl+Shift+Z` | 重做 | +| `Ctrl+S` | 手动保存全部数据 | +| `Ctrl+= / Ctrl+-` | 放大/缩小界面 | +| `Ctrl+0` | 重置界面缩放100% | +| W | 切换动态权重开关 | +| ← / → | 切换上一篇/下一篇课文 | -> ✨小科普: -> 开启去重:同一节课尽量不点重复同学,适合常规课堂。 -> 关闭去重:适合快速扫荡抽查,看谁运气爆棚连续中招。 +--- -## 💡 老玩家私藏骚操作 -1. **纯点名模式**:直接清空 `texts.txt`,程序自动关闭抽背功能,专心点名整活。 -2. **极速扫荡模式**:关掉去重,快速轮询全班,主打一个刺激。 -3. **编码保命**:txt保存为UTF‑8,不然中文直接乱码,体验感爆炸。 -4. **拒绝空气人**:名单不要留空行,不然会随机抽到不存在的同学,属于程序整活bug。 +## 💡 课堂使用小技巧 +1. **分层教学**:新建学生分组,抽取时选择分组,只抽查该组学生。 +2. **课后复盘**:打开统计窗口,查看本节课全部轮次记录、课文抽查统计,分析薄弱学生与薄弱篇目。 +3. **投影上课**:开启暗色主题,开启界面缩放,适配教室大屏;打开悬浮小窗,不遮挡课件。 +4. **纯点名模式**:不导入任何课文,系统自动关闭抽背,只做随机点名。 +5. **插件扩展**:打开可视化插件打包工具,拖拽组件快速制作自定义功能插件,拓展软件能力。 + +> 避坑提醒:导入外部txt文件务必使用`UTF‑8`编码;名单、题库不要留多余空行。 --- ## 📜 更新日志 -### V6.0|2026‑08‑27 -- 🚀 重磅升级**第六代A13随机引擎**,概率分配更加科学合理 +### V6.8|2026‑09‑26 +- 🚀 **整体迁移PyQt5重构,告别Tkinter**,全界面现代化升级 +- 🎲 第六代A13抽取引擎增强,新增**课堂轮次历史系统**,支持查看、加载、恢复历史抽取轮次 +- 📊 完整可视化统计图表:饼图、多类柱状图、抽取日志表格;课文维度统计分析 +- 🛠️ 新增多级撤销/重做,自定义周期自动保存,全局界面缩放,学生分组抽取 +- 🧩 插件系统重大升级:可视化拖拽插件打包编辑器;修复多处插件执行报错;预注入常用标准库;优化插件管理UI +- ⚙️ 设置系统重构:清理冗余无效设置;动画全部可生效;区分立即生效/需重启配置;右上角重启提醒按钮 +- 📝 课文列表右键编辑菜单,无需手动修改文本文件 +- 🛡️ 全局现代化异常弹窗,错误信息一键复制,降低闪退概率 +- 📁 **完全兼容V6.2旧版数据**,平滑迁移升级 +- 🪟 新增系统托盘最小化后台运行能力;悬浮浮窗体验优化 +- ⌨️ 拓展全套快捷键,覆盖新增全部功能 +- 🐛 修复:动画设置不生效、datetime模块导入报错、打包安装程序异常、绘图浮点数崩溃、部分按钮交互失效、档案保存异常 + +### V6.2|2026‑08‑27 +- 🚀 重磅升级第六代A13随机引擎,概率分配更加科学合理 - 🔨 整体重构代码,架构清爽整洁,可读性、可维护性拉满 - 🧙‍♂️ 新增交互式配置向导,零基础小白友好 - 🛡️ 强化数据校验,自动过滤空行、无效脏数据 @@ -121,26 +157,40 @@ python wizard_launcher.py --- ## 💬 开发者碎碎念 -> 拒绝花里胡哨的鸡肋功能,只做真正能用的课堂工具。 -> 无会员、无广告、永久免费开源。 -> 用算法代替主观偏心,减少老师点名内耗,顺便给学生一点点听课压力(狗头)。 - -喜欢就点个 ⭐Star 支持一波! -有脑洞、bug欢迎提 Issue / PR,一起来折腾。 +坚持做面向一线教师的实用课堂工具,拒绝堆砌华而不实的鸡肋功能。全程本地离线运行,**不会上传任何学生名单、课堂数据到外网**。 +永久免费用于教学,无广告无会员。 +如果你觉得软件好用,欢迎点 ⭐Star;遇到BUG、有课堂新需求欢迎提交Issue与PR,一起迭代优化。 --- ## 📄 开源许可 -本项目仅供教育学习、个人教学场景使用。 -**禁止直接打包倒卖、二次封装用于商业盈利。** +本项目仅限**教育学习、个人教学场景使用**。 +禁止直接打包倒卖、二次封装后用于商业盈利。二次改编分发请明确标注原项目与原作者。 -产品GITHUB仓库-https://github.com/a13zhy/a13rollcall - -产品目录网址-https://dkfile.istester.com/zhysppa13/a13callname.html +> GitHub仓库:[https://github.com/a13zhy/a13rollcall](https://github.com/a13zhy/a13rollcall) +> 项目下载页:[https://dkfile.istester.com/zhysppa13/a13callname.html](https://dkfile.istester.com/zhysppa13/a13callname.html) ## 👨‍💻 Author -**a13zhy**二创请标注原作者!!!!!谢谢各位大神 +a13zhy,二次创作、二次分发请标注原作者! + +--- + +### V6.8项目目录简要说明 ``` -产品GITHUB仓库-https://github.com/a13zhy/a13rollcall -产品目录网址-https://dkfile.istester.com/zhysppa13/a13callname.html +a13rollcall_v6.8/ +├─ main_qt.py # PyQt5主程序入口 +├─ wizard_launcher.py # 新手配置向导 +├─ arcx_packager.py # 可视化插件打包工具 +├─ plugin_installer.py # 插件安装程序 +├─ constants.py # 全局常量统一管理 +├─ exceptions.py # 异常定义 +├─ modern_ui.py # 通用现代化UI组件 +├─ error_dialog.py # 现代化错误弹窗 +├─ operation_history.py # 撤销重做管理器 +├─ weight_visualization.py # 权重可视化组件 +├─ group_manager.py # 学生分组管理器 +├─ visual_page_editor.py # 插件可视化拖拽编辑器 +├─ stats_charts.py # 统计图表绘制组件 +├─ data_manager.py # 数据持久化、轮次历史管理 +└─ plugin_manager.py # 插件运行管理沙箱 ```