当前位置: 首页 > news >正文

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()
  1. 整个程序的执行,是先在当前路径下读取 EXCEL  学生名单.xlsx。
  2. 读取第一列到列表 students。
  3. 点击【点名】按钮的时候,会调用绑定的方法 roll_call,随机选中 students 列表中的一个元素,修改弹窗的标签文本,然后从 students 中移除已经点过名的学生。

学生名单.xlsx:

四、运行

 py .\roll-call.py

五、打包成 exe

pyinstaller -w roll-call.py
# -w 禁止弹出 CMD 窗口。

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

六、网盘程序欢迎取用

现成打包好的程序

http://www.lryc.cn/news/544661.html

相关文章:

  • 【Java基础】Java中new一个对象时,JVM到底做了什么?
  • C#中的字典怎么使用?
  • vue框架后遗症∶被遗忘的dom操作
  • 进程 ─── linux第10课
  • 线性模型 - 支持向量机
  • MyBatis-Plus注解配置:@TableName、@TableId、@TableField
  • DeepSeek接入问题-Xshell5连接Ubuntu22失败解决方案
  • 论文阅读之基于Syn2Real域的侧扫声纳类水雷目标探测
  • 【Java】Tomcat日志
  • datalist 是什么?
  • 初阶数据结构(C语言实现)——3顺序表和链表(3)
  • Docker 数据卷管理及优化
  • Hi3516CV610车牌识别算法源码之——车牌识别算法初体验
  • 使用内置命令查看笔记本电池健康状态
  • HONOR荣耀MagicBook 15 2021款 独显(BOD-WXX9,BDR-WFH9HN)原厂Win10系统
  • transformer架构的语言模型保存的内容与格式详解
  • win本地vscode通过代理远程链接linux服务器
  • 【C++编程探索】01前缀和来临!优点多多!八千字详解
  • 文件下载技术的终极选择:`<a>` 标签 vs File Saver.js
  • 《机器学习数学基础》补充资料:矩阵的LU分解
  • [笔记.AI]AI知识科普提纲
  • Spring Security 如何防止 CSRF 攻击?
  • 使用 Kubeflow 和 Ray 构建机器学习平台
  • SEO炼金术(4)| Next.js SEO 全攻略
  • 每日十个计算机专有名词 (7)
  • StarRocks 在爱奇艺大数据场景的实践
  • 蓝桥杯好题推荐----高精度乘法
  • Linux网络 数据链路层
  • 量子计算可能改变世界的四种方式
  • React 组件基础介绍