# RandomCallTool
**Repository Path**: ElofHew/RandomCallTool
## Basic Information
- **Project Name**: RandomCallTool
- **Description**: 一个基于Python3 + Tkinter的随机抽取工具
- **Primary Language**: Python
- **License**: MIT
- **Default Branch**: main
- **Homepage**: https://rct.danevan.top/
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-01-11
- **Last Updated**: 2026-10-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 随机抽取工具
Random Call Tool

[官方网站](https://rct.danevan.top/) | [GitHub](https://github.com/ElofHew/RandomCallTool) | [Gitee](https://gitee.com/ElofHew/RandomCallTool)
## 简介
随机抽取工具(RandomCallTool)是一个基于 **Python3** + **tkinter** 的桌面应用程序,拥有 **随机抽组**、**随机抽人**、**随机点名** 三大核心功能。
**随机抽取** 内置三档可切换的抽样模式(基本抽样 / 智能抽样 / 高级抽样),并支持样本库管理、历史记录、快捷键操作等丰富特性。
自 **V2.7** 起还提供 **桌面悬浮球** 与 **系统托盘**,桌面上点一下即可快速抽取。
>[!NOTE]
> 该项目优先支持 Windows 操作系统环境。对于 Linux 和 macOS 可能支持不佳。
>[!TIP]
> 你可以阅读 [官网文档](https://rct.danevan.top/docs/) 获取更详细的使用说明和最新更新日志。
## 主要功能
- **随机抽组**:从数字(1-26)或字母(A-Z)中随机抽取指定数量的组。
- **随机抽人**:从 `.rcp` / `.txt` / `.csv` 样本文件或样本库中随机抽取指定数量的人名。
- **随机点名**:跑马灯式点名,支持自动点名、随机速率、到时停止、点名前打乱、放回/不放回、剩余人数重置等。
- **三档抽样模式**:基本抽样、智能抽样、高级抽样;高级模式支持放回/不放回、抽取前打乱、预抽取平衡、多次取最值、随机/自定义权重、递进式抽取等。
- **样本库与名单管理**:样本库上限 50 个,支持重命名、删除、导出为 `RCP` / `TXT`;加载名单时自动限制文件大小、名字数量与长度。
- **历史记录**:界面历史面板支持单条/批量保存;每次抽取可按日期写入 `data/history/YYYY-MM-DD.txt`,也可在配置中关闭。
- **提醒与结果处理**:支持弹窗提醒,或通过 **ClassIsland 通知**(需启用 IslandMQ 插件,依赖 `pyzmq`)将结果推送到教室电脑,可配置 IP / 端口、通知标题、遮罩与正文显示时长,并支持连接测试;通知失败时可回退弹窗。随机点名不触发提醒,点中结果直接显示在界面中。单次抽取超过 10 个时,弹窗/通知只显示前 10 个,完整结果会强制保存为 HTML 并写入历史记录。
- **桌面集成**:提供 **桌面悬浮球** 与 **系统托盘**。悬浮球可左键快速抽取、右键切换抽取类型与数量(1~9),可拖动并记住位置;系统托盘支持关闭窗口后驻留、显示主界面、打开配置、检测更新、显示/隐藏悬浮球和退出。该功能依赖 `pystray` 与 `Pillow`,未安装时托盘不可用。
- **配置与效率**:多选项卡配置窗口,支持自动保存结果、保存路径、自动加载样本/点名名单等;提供快捷键与按日期滚动的详细日志。
- **平台支持**:优先支持 Windows;Linux / macOS 可能支持不佳,且仅提供 Windows 编译版本。
>[!TIP]
> 完整功能、配置细节与更新日志请查看 [官网文档](https://rct.danevan.top/docs/)。
## 更新程序
项目附带独立的更新程序 `update.exe`,可独立运行,也可由主程序调用:
- **双更新源**:可在 GitHub / Gitee 之间切换,中国大陆建议使用 Gitee。
- **测试版更新**:可勾选「接收测试版更新」,预览版发布时同样会检测到。
- **多种下载方式**:支持直接下载安装包自动更新、前往官网下载,以及夸克网盘 / 蓝奏云等备用网盘。
## 卸载工具
项目附带独立的卸载工具 `remove.exe`,提供三种卸载模式:
- **保留数据卸载**:仅移除程序文件,保留配置、日志和结果数据。
- **重置配置**:仅删除数据配置和日志,保留程序文件。
- **完全卸载**:移除程序文件及所有用户数据。
除程序目录外,卸载时还会一并清理「开始菜单」中的程序组文件夹与桌面快捷方式。
## 注意事项
>[!IMPORTANT]
>1. 程序支持三大平台(Windows / Linux / macOS),但仅提供 Windows 编译版本。
>2. 从 **GitHub** / **Gitee** / **网盘链接** 下载最新版本手动安装更新时,请先关闭当前运行的**随机抽取工具套件**内的所有程序(主程序、更新程序等),再运行安装包,否则会因为占用问题安装失败,并影响到程序完整性,造成程序运行出错或数据损坏等严重问题。
>3. 自 **V2.5.2** 起,配套的「名单编码工具」已从套件中移除。如需 `.rcp` 名单文件,可直接导入 `.txt` / `.csv`,或自行将明文名单进行 Base64 编码后另存为 `.rcp`。
## 截图(来自 2.7 版本)

随机抽取工具主界面(主页选项卡)

随机抽取功能,支持随机抽人和抽组

随机点名功能,支持跑马灯式点名

多选项卡配置界面(图中演示提醒通知功能)

高级抽取配置,支持众多抽取优化功能
## 编译与运行(Windows)
1. 确保安装了 **Python 3.6 及以上** 版本环境(建议使用 3.8 及以上版本,推荐 3.12)。
2. 下载或 `git clone` 项目到本地。
3. 打开命令行或终端,进入项目目录。
4. 运行 `pip install -r requirements.txt` 安装 PyInstaller 与可选依赖(`pyzmq` 用于 ClassIsland 通知,`pystray` / `Pillow` 用于系统托盘,缺失时对应功能不可用,其余功能不受影响)。
5. (仅限 Windows)运行根目录下的构建脚本,生成可执行文件:`build.bat`(依赖包外置于 `_internal` 目录)。
6. (可选)使用 **7z SFX Builder** 搭配 `SFX_config.txt`(需自行修改部分目录)打包自解压安装程序。
>[!NOTE]
> 7z SFX Builder 可从 [蓝奏云网盘](https://lzofevan.lanzn.com/ipqhQ3p9nk2d) 下载(密码:8kmj)。
>[!TIP]
> 或者可以直接下载 Release 版本并直接运行。
## 仓库
- **GitHub**:[https://github.com/ElofHew/RandomCallTool](https://github.com/ElofHew/RandomCallTool)
- **Gitee**:[https://gitee.com/ElofHew/RandomCallTool](https://gitee.com/ElofHew/RandomCallTool)
>[!NOTE]
> ~~注:本项目约50%为AI代码,开发者在尝试 Vibe Coding 后发现这真是个好东西。但是出于代码质量,开发者在AI生成后会人工审查并修改,故不能完全视作AIGC项目,。(应该不能……)(反正有些文档什么的我直接让AI生成应该不过分吧……)~~
>
> 好了孩子们,我承认我貌似对AI Coding有点上瘾了,。,。
>
> 从现在开始,我会开始减少AI使用,尽可能人工审查和修改代码……
>
> 另外,由于我本人的经验不足、时间紧张等,一些commit提交记录可能很草率,更新节奏忽快忽慢等,还请见谅,感谢理解,。,。
---
© 2025~2026 ElofHew