• 智能AI问答!更聪明、更完整、原创作!
  • 一款基于GPT的超级AI机器人,可以回答问题、聊天、创作、写文案!

只用openlyxl和tkinter写代码

发布于 2024-06-03 15:16:38

使用openpyxl库来处理Excel文件和tkinter库来创建GUI窗口,以下是一段示例代码:

from tkinter import Tk, Label, Button, messagebox
import openpyxl
from openpyxl import load_workbook

def load_student_data(filename):
    try:
        wb = load_workbook(filename)
        ws = wb.active
        student_data = []
        for row in ws.iter_rows(min_row=2, values_only=True):
            student_data.append(row)
        return student_data
    except Exception as e:
        messagebox.showerror("错误", f"加载Excel文件失败: {str(e)}")
        return None

def mark_present(student_id):
    global student_data
    for i, student in enumerate(student_data):
        if student[0] == student_id:
            student_data[i].append('到场')
            wb.save('student_list.xlsx')
            break

def mark_absent(student_id):
    global student_data
    for i, student in enumerate(student_data):
        if student[0] == student_id:
            student_data[i].append('缺席')
            wb.save('student_list.xlsx')
            break

def next_student():
    global current_index
    if current_index < len(student_data):
        current_index += 1
        student_name, student_id = student_data[current_index - 1][1], student_data[current_index - 1][0]
        student_info.config(text=f"姓名: {student_name}\n学号: {student_id}")
    else:
        messagebox.showinfo("完成", "所有学生都已点名完毕")

def on_present():
    mark_present(student_data[current_index - 1][0])
    next_student()

def on_absent(event):
    mark_absent(student_data[current_index - 1][0])
    next_student()

# 主窗口
root = Tk()
root.title("学生点名系统")

# Excel文件路径
filename = 'student_list.xlsx'

# 加载学生数据
student_data = load_student_data(filename)
current_index = 1  # 第一行通常是标题行,从第二行开始

# 更新GUI的函数
def update_gui():
    if student_data:
        student_name, student_id = student_data[current_index - 1][1], student_data[current_index - 1][0]
        student_info.config(text=f"姓名: {student_name}\n学号: {student_id}")

# 学生信息显示
student_info = Label(root, text="", font=('Helvetica', 16))
student_info.pack(pady=20)

# 到场按钮
button_present = Button(root, text="到场", font=('Helvetica', 16), bg='green', fg='white', command=on_present)
button_present.pack(side="left", fill="both", expand=True, padx=10, pady=10)

# 缺席按钮
button_absent = Button(root, text="缺席", font=('Helvetica', 16), bg='red', fg='white', bg='red')
button_absent.pack(side="right", fill="both", expand=True, padx=10, pady=10)

# 启动GUI应用
update_gui()
root.mainloop()

这段代码做了以下事情:

  1. 使用load_student_data函数从Excel文件中加载学生信息。
  2. 定义了mark_presentmark_absent函数来标记学生的到场和缺席状态。
  3. 使用next_student函数来更新显示下一个学生的信息。
  4. on_presenton_absent函数分别用于处理到场和缺席的按钮点击事件。
  5. 利用update_gui函数在GUI中显示当前学生的信息。
  6. 使用Tkinter创建了一个窗口,其中包括学生的姓名和学号标签,以及到场和缺席按钮。

请确保将student_list.xlsx文件放到与此脚本相同的目录中,并且该文件包含至少两列:学号和姓名。

0 条评论

发布
问题

在线
客服