一直以来超星学习通的霸屏考试让很多人无从下手,所以大一刚学python就写了一个关于考试客户端的考试脚本,主要用途就是可以方便考试
可以一边看代码,一边看解析,没有图片的原因是因为个人太懒,写好防截屏录屏之后就懒得改回去展示了,欢迎star,fork,follow
代码地址 github
项目介绍
本项目是一个专为考试客户端(如学习通)设计的辅助工具,集成了本地题库管理、AI智能搜题、窗口防护与界面增强等多项实用功能,提升考试答题效率与体验。
主要功能
题库管理与搜索
- 本地题库导入:自动读取
tiku.txt文件,支持大批量题目管理。 - 关键词高亮搜索:输入关键词后,所有匹配项高亮显示,支持回车键跳转下一个结果。
- 题库内容只读保护:防止误操作修改题库内容。
AI 智能搜题
- 多AI平台支持(免重启热切换):默认使用写死在代码中的讯飞星火配置;当存在
config.yaml且配置了deepseek.api_key时自动使用 Deepseek;在设置页保存 Deepseek 配置后可立即生效,无需重启。 - 一键AI问答:输入问题后,AI自动返回答案,支持多线程防止界面卡顿。
- AI答案一键输入:AI答案可一键自动输入到目标输入框(需英文输入法)。
界面与交互增强
- 窗口置顶与防录屏/截屏:调用
SetWindowDisplayAffinity,窗口始终置顶且无法被录屏/截屏工具捕获。 - 窗口透明度调节:右键一键切换(0.2/0.5),Ctrl+滚轮精细调节(0.1~1.0)。
- 字体大小调节:Alt+滚轮随时调整题库/AI答案字体大小。
- 窗口快速隐藏/显示:F3一键隐藏到屏幕边缘,再次按下恢复。
- 窗口自由拖动:Ctrl+鼠标左键拖动窗口到任意位置。
- ESC/F1-F12快捷退出:ESC或任意F1-F12键可快速关闭程序(可自定义)。
其他实用功能
- 多线程处理:AI问答、输入等操作均采用多线程,保证界面流畅不卡顿。
- 详细注释与易用配置:所有代码文件均有详细头部说明和函数注释;
config.yaml仅存放 Deepseek 配置,简单明了,便于二次开发。
代码结构与模块说明
本项目已重构为模块化结构,主入口为main.py,各功能分为独立模块,便于维护和扩展。
├── main.py # 程序主入口,负责加载配置、初始化界面、事件绑定、AI调用与主流程调度
├── config_manager.py # 配置加载与校验,提供全局配置访问接口
├── file_manager.py # 题库文件读取,供主界面加载题库内容
├── ai_spark.py # 讯飞星火AI WebSocket API调用、参数生成、消息处理
├── ai_deepseek.py # DeepseekAI HTTP API调用,AI问答请求与异常处理
├── ui_main.py # 主界面控件的创建、布局、搜索高亮、输入等事件处理
├── ui_ai.py # AI界面控件的创建、布局、AI搜索与输入事件处理
├── ui_settings.py # 设置界面(嵌入式)Deepseek 配置读写与保存
├── utils.py # 通用窗口操作工具函数,如置顶、透明度调整、窗口拖动、关闭等
├── config.yaml # 配置文件,仅包含 Deepseek 配置(可选)
├── tiku.txt # 本地题库文件
└── README.md # 项目说明文档
使用说明
环境准备
- 安装Python:确保已安装Python 3.7+。
安装依赖:在命令行中运行以下命令安装所需依赖:
pip install tkinter requests pyyaml pynput websocket-client- 准备文件:在程序运行目录下创建
tiku.txt(题库)和config.yaml(配置文件)。
配置与切换
- 程序默认使用讯飞星火配置,无需也不会写入到
config.yaml。 如需使用 Deepseek,请在主界面的“设置”中填写并保存:
api_key: 你的 Deepseek API Keymodel: 仅支持deepseek-chat或deepseek-reasoner
- 保存后立即生效,无需重启;
config.yaml仅包含deepseek字段。
启动程序
- 运行程序:在命令行中运行
python main.py。 主界面功能:
- 题库搜索:输入关键词,回车跳转下一个结果。
- 设置/AI:顶部右侧“设置”按钮与“AI”按钮(已对调位置)。
- 快捷输入:在输入框中输入内容,点击"输入"按钮自动输入。
常用快捷键与操作
- F3:窗口隐藏/恢复
- Ctrl+鼠标左键:拖动窗口
- 右键:切换透明度
- Ctrl+滚轮:调整透明度
- Alt+滚轮:调整字体大小
- ESC/F1-F12:快速退出
- 回车:题库搜索下一个
常见问题
Q: 启动报错"缺少config.yaml文件"?
- A: 请确保
config.yaml在程序同目录下,参考示例配置文件填写。
- A: 请确保
Q: 题库无法加载或搜索?
- A: 请确保
tiku.txt存在且为UTF-8编码,每行一题。
- A: 请确保
Q: AI搜题无响应?
- A: 检查网络连接、API密钥是否正确,或更换AI平台。
Q: 窗口无法被录屏/截屏?
- A: 仅主窗口受保护,输入法弹窗等仍可能被录屏,技术有限无法完全防护。
Q: 如何自定义快捷键?
- A: 可在
main.py等文件中修改相关绑定代码,注释详细易于调整。
- A: 可在
时间日历
| 日期 | 事件 |
|---|---|
| 2024.12.26 | 项目开始,创建代码仓库 |
| 2024.12.27 | 创建README和GPL-3.0 License,demo1.py实现透明度、快捷退出等 |
| 2024.12.28 | 解决截屏/录屏,题库导入与高亮搜索 |
| 2024.12.29 | 添加一键输入功能 |
| 2024.12.30 | 完成AI功能(讯飞星火),项目基本完成 |
| 2025.1.1 | 添加Alt+滚轮调整字体大小 |
| 2025.1.6 | 添加窗口可移动(Ctrl+鼠标左键) |
| 2025.1.7 | 添加config文件,AI功能更易配置 |
| 2025.2.13 | 添加Deepseek AI |
| 2025.2.25 | 添加前置文件查找、详细注释 |
| 2025.2.27 | 多线程处理防止堵塞 |
| 2025.4.22 | 查找下一个功能 |
| 2025.7.9 | 终于把屎山重构了,更加便于修改 |
| 2025.9.10 | 更新架构 |
注意事项
⚠️ 请确保运行目录下有tiku.txt文件- AI逻辑代码已模块化,详见
ai_spark.py、ai_deepseek.py - 讯飞星火AI需自行申请密钥
- 预留AI可直接使用
- 其他AI请自行修改代码
- 隐藏(F3)时窗口透明度降到最低,拉成细条放左侧
- 输入法内容仍可能被录屏/截屏,能力有限无法解决,如有方案欢迎issues留言
- 如需要破解复制粘贴功能&&篡改猴相关功能,请移步cef_cx_copy_tool
配置说明
config.yaml(可选,仅用于 Deepseek,无需单独设置):
deepseek:
api_key: "YOUR_DEEPSEEK_API_KEY"
model: "deepseek-chat" # 或 deepseek-reasoner
贡献与反馈
欢迎提交 Issues 反馈问题或建议,或直接 Fork/PR 参与开发。
免责声明
本代码仅用于学习讨论,禁止用于盈利或违法用途。
遵循 GPL-3.0 License 协议:
- 允许开源/免费使用、引用、修改、衍生
- 禁止闭源商业发布、销售及盈利
- 基于本代码的程序必须同样遵守GPL-3.0协议
- 他人或组织使用本代码进行的任何违法行为与本人无关
🎁 赞赏支持
如果您觉得此项目对您有所帮助,可以进行赞赏支持:
Made with ❤️ by SJYssr
超星学习通考试客户端考试题库脚本