Python 课堂点名桌面小程序
一、场景分析
闲来无事,老婆说叫我开发一个课堂点名桌面小程序,给她在课堂随机点名学生问问题。
人生苦短,那就用 Python 给她写一个吧。
二、依赖安装
因为要用到 excel,所以安装两个依赖:
pip install openpyxl
pip install pandas
pip install pyinstaller
三、程序代码
roll-call.py:
import random
import tkinter as tk
import pandas as pddef excel_read():# 读取当前路径下学生名单input_path=r".\学生名单.xlsx"# 读取 Excel 文件,将其存储在一个DataFrame对象中df = pd.read_excel(input_path)first_column_array = df['学生姓名'].values#print(first_column_array)return first_column_arraydef random_pick_student(students):# 随机选择一个学生picked_student = random.choice(students)return picked_studentdef main():nparray = excel_read()# 转换为 liststudents = nparray.tolist()def roll_call(label):# 修改 label textif len(students) == 0:label.config(text="所有学生都点过名了") else:picked_student = random_pick_student(students)str = f"本次被点名的学生是:{picked_student}"label.config(text=str)students.remove(picked_student)# 创建主窗口root = tk.Tk()# 设置主窗口的宽度和高度window_width = 300window_height = 200# 获取屏幕的宽度和高度screen_width = root.winfo_screenwidth()screen_height = root.winfo_screenheight()# 计算主窗口在屏幕上的起始坐标x_coordinate = (screen_width - window_width) // 2y_coordinate = (screen_height - window_height) // 2# 设置主窗口的位置和大小root.geometry(f"{window_width}x{window_height}+{x_coordinate}+{y_coordinate}")root.title("课堂幸运儿点名程序")# 创建标签label = tk.Label(root, text="按【点名】键开始随机点名,按【关闭】键结束~~")# 使用 grid() 方法将标签放置在第一行的第 0 列和第 1 列,columnspan 合并两列label.grid(row=0, column=0, columnspan=2)# 创建按钮button1 = tk.Button(root, text="点名", command=lambda: roll_call(label), bg="green", fg="white", width=10)button2 = tk.Button(root, text="关闭", command=root.quit)# 使用 grid() 方法将按钮放置在第二行的第 0 列和第 1 列button1.grid(row=1, column=0, padx=10, pady=20)button2.grid(row=1, column=1, padx=10, pady=20)# 设置第一行的权重为 1root.rowconfigure(0, weight=1)# 设置第二行的权重为 1root.rowconfigure(1, weight=1)# 设置列的权重,让组件在水平方向上居中root.columnconfigure(0, weight=1)root.columnconfigure(1, weight=1)# 进入主事件循环root.mainloop()if __name__ == "__main__":main()
- 整个程序的执行,是先在当前路径下读取 EXCEL 学生名单.xlsx。
- 读取第一列到列表 students。
- 点击【点名】按钮的时候,会调用绑定的方法 roll_call,随机选中 students 列表中的一个元素,修改弹窗的标签文本,然后从 students 中移除已经点过名的学生。
学生名单.xlsx:


四、运行
py .\roll-call.py

五、打包成 exe
pyinstaller -w roll-call.py
# -w 禁止弹出 CMD 窗口。

将学生名单.xlsx 拷贝到 dist\roll-call 下面,然后右键将 exe 文件发送到桌面快捷方式:


六、网盘程序欢迎取用
现成打包好的程序
相关文章:
Python 课堂点名桌面小程序
一、场景分析 闲来无事,老婆说叫我开发一个课堂点名桌面小程序,给她在课堂随机点名学生问问题。 人生苦短,那就用 Python 给她写一个吧。 二、依赖安装 因为要用到 excel,所以安装两个依赖: pip install openpyxl…...
【Java基础】Java中new一个对象时,JVM到底做了什么?
Java中new一个对象时,JVM到底做了什么? 在Java编程中,new关键字是我们创建对象的最常用方式。但你是否想过,当你写下new MyClass()时,Java虚拟机(JVM)到底在背后做了哪些工作?今天&…...
C#中的字典怎么使用?
在C#中,Dictionary<TKey, TValue> 是一个泛型集合类,用于存储键值对(key-value pairs)。它提供了快速的查找、插入和删除操作,适合需要根据键快速查找值的场景。以下是 Dictionary 的基本用法和常见操作…...
vue框架后遗症∶被遗忘的dom操作
用多了vue、react等前端框架,不得不说用数据驱动视图来开发真的很香,但是也免不了会有不用这些框架的项目,dom操作还是很有必要的,一开始学习网页设计的时候就教过,后面一直开发项目基本上用框架。虽然有些想不起来了&…...
进程 ─── linux第10课
目录 回顾上一节 进程 基本概念 描述进程 - PCB task_struct - PCB的一种 task_ struct内容分类 组织进程 下面来介绍task_struct内部 PID 和PPID 子进程与父进程 getpid()和getppid() 杀进程 exe 和 cwd 回顾上一节 1. 如果我们写的程序要访问硬件,必定通过sy…...
线性模型 - 支持向量机
支持向量机(SVM)是一种用于分类(和回归)的监督学习算法,其主要目标是找到一个最佳决策超平面,将数据点分为不同的类别,并且使得分类边界与最近的数据点之间的间隔(margin)…...
MyBatis-Plus注解配置:@TableName、@TableId、@TableField
MyBatis-Plus 是 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis-Plus 提供了一系列注解,用于简化数据库表与实体类之间的映射关系。以下是 @TableName、@TableId 和 @TableField 这三个常用注解的配置和使用说明。 官方文档:…...
DeepSeek接入问题-Xshell5连接Ubuntu22失败解决方案
项目场景: deepseek部署常用系统Ubuntu系统, xshell5连接Ubuntu22遇到如下问题: 问题描述 xshell5连接Ubuntu22遇到如下问题: Connecting to 172.16.46.80:22... Could not connect to 172.16.46.80 (port 22): Connection fa…...
论文阅读之基于Syn2Real域的侧扫声纳类水雷目标探测
摘要 由于现实世界数据的稀缺性,基于深度学习的水下水雷探测受到了限制。这种稀缺性导致过拟合,即模型在训练数据上表现良好,但在未见数据上表现不佳。本文提出了一种使用扩散模型的Syn2Real (Synthetic to Real)域泛…...
【Java】Tomcat日志
Tomcat日志 tomcat 日志的配置文件是tomcat目录下的/conf/logging.properties。 日志输出级别:SEVERE (最高级别) > WARNING > INFO > CONFIG > FINE > FINER(精心) > FINEST (所有内容,最低级别) 日志分类 tomcat 有五类日志 : …...
datalist 是什么?
一、datalist 是什么? datalist 是 HTML5 引入的一个表单相关元素,它本质上是一个为输入框(<input>)提供预定义选项列表的容器。从外观上看,当用户在与之关联的输入框中进行输入操作时,会自动弹出一个…...
初阶数据结构(C语言实现)——3顺序表和链表(3)
3.链表 3.1 链表的概念及结构 概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 链表的物理结构 1.从上图可看出,链式结构在逻辑上是连续的,但是在物理上不一定连续…...
Docker 数据卷管理及优化
Docker 数据卷是一个可供容器使用的特殊目录,它绕过了容器的文件系统,直接将数据存储在宿主机上。通过数据卷,可以实现数据的持久化、共享以及独立于容器生命周期的管理。 1.1 为什么要用数据卷 Docker 分层文件系统的特点 性能差ÿ…...
Hi3516CV610车牌识别算法源码之——车牌识别算法初体验
本文讲述如何使用Hi3516CV610开发板读取本地图片,运行车牌识别算法推理,得到车牌信息并打印; 下一篇将介绍Hi3516CV610开发板如何从sensor摄像头获取图像,运行车牌识别算法推理,得到车牌信息并打印; 一、准…...
使用内置命令查看笔记本电池健康状态
如何使用powercfg /batteryreport命令查看笔记本电池健康状态 在Windows系统中,了解笔记本电池的健康状态对于维护电脑性能和预测电池寿命至关重要。Windows 10和Windows 11系统提供了一个内置命令powercfg /batteryreport,可以生成一份详细的电池使用情…...
HONOR荣耀MagicBook 15 2021款 独显(BOD-WXX9,BDR-WFH9HN)原厂Win10系统
适用型号:【BOD-WXX9】 MagicBook 15 2021款 i7 独显 MX450 16GB512GB (BDR-WFE9HN) MagicBook 15 2021款 i5 独显 MX450 16GB512GB (BDR-WFH9HN) MagicBook 15 2021款 i5 集显 16GB512GB (BDR-WFH9HN) 链接:https://pan.baidu.com/s/1S6L57ADS18fnJZ1…...
transformer架构的语言模型保存的内容与格式详解
前文我们已经详细讲述了基于pytorch框架下的transformer架构如何从零开始构建一个小型字符级语言模型,构建过程中涵盖数据准备、模型架构设计、训练、评估与生成的整个流程。我们已经了解了各个部分的细节,而且已经提供了完整的python代码。现在需要了解我们构建好的模型如何…...
win本地vscode通过代理远程链接linux服务器
时间:2025.2.28 1. win本地下载nmap.exe nmap官网 https://nmap.org/或者 https://nmap.org/download#windows下载win版本并安装。 2. vscode插件Remote-SSH 插件下载Remote-SSH 3. 配置 按照图中顺序配置ssh 1.点击左侧工具栏的“小电视”图标 2.点击ssh的…...
【C++编程探索】01前缀和来临!优点多多!八千字详解
个人主页:PingdiGuo_guo 收录专栏:C干货专栏 【PingdiGuo_guo:一名C、数据结构、算法等爱好者,用所学帮助大家,感谢关注!】 新年刚过,在这里先祝各位 新年快乐!!…...
文件下载技术的终极选择:`<a>` 标签 vs File Saver.js
文件下载技术的终极选择:<a> 标签 vs File Saver.js 在 Web 开发中,文件下载看似简单,实则暗藏玄机。工作种常纠结于 <a> 标签的原生下载和 File Saver.js 等插件的灵活控制之间。本文将从原理、优缺点、场景对比到实战技巧&…...
微信小程序wxapkg逆向解析原理与合规源码还原实践
1. 这不是“破解”,而是合法合规的源码审计实践微信小程序生态里,每天有数百万个新版本上线,而开发者真正能拿到手的,往往只有.wxapkg文件——一个经过混淆、压缩、资源内联、逻辑分包的二进制容器。很多人第一反应是:…...
Applera1n终极指南:如何在iOS 15-16设备上完整绕过iCloud激活锁
Applera1n终极指南:如何在iOS 15-16设备上完整绕过iCloud激活锁 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n Applera1n是一款专门针对iOS 15-16系统的iCloud激活锁绕过工具,…...
孟加拉语作者画像基准测试:朴素贝叶斯与SVM在低资源语言NLP中的表现分析
1. 项目概述:当机器学习遇见孟加拉语社交媒体在社交媒体无处不在的今天,我们每天都会产生海量的文本数据。你有没有想过,仅仅通过一个人写的几段文字,就能大致猜出他的性别和年龄?这听起来有点像数字时代的“读心术”&…...
JiYuTrainer:如何在极域电子教室中找回你的学习主动权
JiYuTrainer:如何在极域电子教室中找回你的学习主动权 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 你是否曾坐在机房电脑前,看着老师通过极域电子教室全…...
Adobe-GenP终极指南:3分钟解锁Adobe全家桶完整方案
Adobe-GenP终极指南:3分钟解锁Adobe全家桶完整方案 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP Adobe-GenP是一款专为Adobe Creative Cloud设计的智能…...
JMeter WebSocket测试实战:协议原理与PD插件全生命周期压测
1. 为什么 WebSocket 接口不能用 HTTP Sampler 硬套?——从协议本质讲清测试前提你是不是也试过,在 JMeter 里把 WebSocket 的 URL 直接粘进 HTTP Request Sampler,填上 Host、Path、Method,点运行,结果 Response Code…...
Midscene.js 实战(二):通过 YAML 脚本实现 AI 驱动的自动化断言
前言:为什么你需要关注 YAML 脚本与 AI 断言? 2025年12月,字节跳动 Web Infra 团队正式发布了 Midscene v1.0。根据官方发布公告,Midscene 自 2024 年开源以来,已经在 GitHub 斩获 11k star、Trending 榜第二名等成绩,并在互联网、金融、政企、汽车等大量应用场景下完成…...
小红书下载神器XHS-Downloader:3分钟解锁隐藏的高级玩法
小红书下载神器XHS-Downloader:3分钟解锁隐藏的高级玩法 【免费下载链接】XHS-Downloader 小红书(XiaoHongShu、RedNote)链接提取/作品采集工具:提取账号发布、收藏、点赞、专辑作品链接;提取搜索结果作品、用户链接&a…...
3步终极解决方案:快速修复Zotero-GPT插件“密钥未配置“错误,开启AI文献管理新时代
3步终极解决方案:快速修复Zotero-GPT插件"密钥未配置"错误,开启AI文献管理新时代 【免费下载链接】zotero-gpt GPT Meet Zotero. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-gpt 还在为Zotero-GPT插件报错"your secretK…...
煎饼果仔 夏天妹妹 90 天 AI 变现落地计划
配套固化核心 Skills+ 标准化Workflow,分阶段落地,兼顾口碑与长效收益 一、阶段总规划 表格 周期 阶段核心目标 变现侧重 AI 能力沉淀 1-30 天 资产梳理 + 模型训练,搭建生产底座 现有商单 + 单片付费增收 风格 LoRA、声纹、剧本模型、素材资产库 31-60 天 AI 量产内容 + …...
