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 等插件的灵活控制之间。本文将从原理、优缺点、场景对比到实战技巧&…...
Leather Dress Collection效果展示:12款皮革服饰LoRA高清生成作品集
Leather Dress Collection效果展示:12款皮革服饰LoRA高清生成作品集 1. 项目介绍 Leather Dress Collection 是一个基于Stable Diffusion 1.5的LoRA模型集合,专门用于生成各种皮革服装风格的图像。这个系列包含了12种不同风格的皮革服饰模型࿰…...
WeChatMsg:数据自主权回归的创新方法
WeChatMsg:数据自主权回归的创新方法 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg 副标题…...
图解匈牙利算法:从增广路到最大匹配的完整流程
图解匈牙利算法:从增广路到最大匹配的完整流程 在解决二分图匹配问题时,匈牙利算法以其简洁高效的特性成为经典选择。想象一下面试官与应聘者的配对场景——如何让每个人找到最合适的岗位?这正是匈牙利算法擅长的领域。本文将用可视化方式拆解…...
智能视频下载解决方案:VideoDownloadHelper高效使用指南
智能视频下载解决方案:VideoDownloadHelper高效使用指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 在数字化时代,…...
深入解析TI DSP的Q格式与IQmath库:定点数运算的高效实现
1. 从浮点到定点:为什么需要Q格式? 第一次接触DSP开发时,我发现一个有趣的现象:很多高性能DSP芯片居然不支持硬件浮点运算!这就像买了个顶级跑车却发现不能跑高速公路。后来才明白,在嵌入式领域,…...
告别字体授权困局:思源宋体CN开源解决方案的全场景应用指南
告别字体授权困局:思源宋体CN开源解决方案的全场景应用指南 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 在数字化创作领域,中文字体选择长期面临"三重困…...
华硕笔记本终极性能优化工具:G-Helper完整使用指南
华硕笔记本终极性能优化工具:G-Helper完整使用指南 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar,…...
EcomGPT-中英文-7B电商模型在VMware虚拟机中的开发测试环境搭建
EcomGPT-中英文-7B电商模型在VMware虚拟机中的开发测试环境搭建 如果你所在的团队正在研究电商领域的AI应用,比如智能客服、商品描述生成或者营销文案创作,那么一个稳定、可复现的开发测试环境至关重要。直接在物理机上折腾,万一搞乱了系统或…...
【2026新版】 DirectX Repair 修复工具操作步骤【图文教程】,DirectX修复工具彻底解决DirectX报错与游戏闪退
DLL缺失、游戏闪退及DirectX错误 要怎么处理?DirectX修复工具可以快速修复DLL缺失、游戏闪退及DirectX错误,支持一键扫描和自动修复。DirectX修复工具是一款专门给 Windows 系统打补丁的小程序,可以把电脑里缺失或损坏的 DirectX 文件重新补全…...
告别复杂配置:AI股票分析师daily_stock_analysis开箱即用实战体验
告别复杂配置:AI股票分析师daily_stock_analysis开箱即用实战体验 1. 引言:为什么选择这个AI股票分析师? 作为一名金融从业者或投资爱好者,你可能经常面临这样的困扰:想要快速了解一只股票的基本情况,却需…...
