咔片PPT · AI自动生成演示文稿,模板丰富、排版精美 讯飞智文 · 一键生成PPT和Word,高效应对学习与办公

大家好!我刚刚编写了一个#python 小程序来帮助老师进行课堂点名。只需要将学生名单存储在一个.xlsx文件中,运行程序,即可随机点名并把结果保存到一个新的文件中。这不仅可以减轻老师的压力,也能为课堂增加一些趣味性,如果不会python,需要定制可以私信我,免费为您服务。#教育科技

展示图片:

代码如下:

import tkinter as tk

import random

import openpyxl

class RollCall:

def __init__(self, master):

self.master = master

self.class_var = tk.StringVar()

self.class_var.set("请选择班级") # 初始值为空字符串

# 加载所有班级名称

self.class_names = []

for sheet_name in self.load_sheet_names("names.xlsx"):

if not sheet_name.startswith('_'):

self.class_names.append(sheet_name)

# 创建下拉菜单

class_option = tk.OptionMenu(self.master, self.class_var, *self.class_names)

class_option.pack(padx=180, pady=20)

self.name_list = []

self.current_name = ""

self.running = False

# 创建标签对象,用于显示目前被点到的学生姓名

self.name_label = tk.Label(self.master, text="", font=("汉仪魏碑简", 80))

self.name_label.pack(padx=180, pady=80)

# 创建开始和停止按钮

self.start_button = tk.Button(self.master, text="开始", command=self.start,width=10, height=3)

self.stop_button = tk.Button(self.master, text="停止", command=self.stop,width=10, height=3)

# 将按钮添加到窗口上

self.start_button.pack(side="left", padx=180, pady=20)

self.stop_button.pack(side="left", padx=120, pady=20)

# 设置窗口大小为 800x600 像素

self.master.geometry("800x600")

self.master.title("课堂点名系统")

def load_sheet_names(self, filename):

# 加载 Excel 文件中的所有工作表名称

wb = openpyxl.load_workbook(filename, read_only=True)

return wb.sheetnames

def load_names(self, filename, sheet_name):

# 加载 Excel 文件中指定班级的所有姓名

wb = openpyxl.load_workbook(filename, read_only=True)

ws = wb[sheet_name]

names = []

for row in ws.iter_rows(min_row=2):

name = row[0].value

if name:

names.append(name)

return names

def get_name(self):

# 随机选择一个学生姓名并设置为当前名称,用于在界面上显示

self.current_name = random.choice(self.name_list)

self.name_label.config(text=self.current_name)

def start(self):

# 触发点名循环

selected_class = self.class_var.get()

if not selected_class:

return # 如果没有选中班级,不进行点名

self.name_list = self.load_names("names.xlsx", selected_class)

self.running = True

while self.running:

self.get_name()

self.master.update()

def stop(self):

# 停止点名循环

self.running = False

if __name__ == '__main__':

root = tk.Tk()

app = RollCall(root)

root.mainloop()