【Python GUI编程】——学生点名程序

在计算机编程的过程中,GUI(图形用户界面)是必不可少的一部分。Python中有多个GUI库可供选择,其中Tkinter是Python自带的标准GUI库,而且功能强大、易于上手。因此,在本篇博客中,我们将介绍一个使用Tkinter开发的简单学生点名程序。

  1. 程序主要功能

该程序的主要功能包括:从Excel文件中读取学生名单,随机选出一名学生进行点名,并统计和更新该学生的点名次数和最近点名时间;同时,还可以通过添加新学生的功能,增加新的学生到Excel文件中。

  1. 程序实现步骤

首先,程序会检查Excel文件是否存在以及表头是否正确。如果文件或表头不存在,则会创建新的文件和表头。这一步非常重要,可以保证程序的正常运行。

接着,窗口被创建并分为三个部分。顶部的标签显示“请点击‘开始点名’按钮”,中间的按钮用于执行点名操作,底部则是一个文本框和一个添加学生按钮,用于添加新的学生。在执行点名操作时,程序会随机选择一个学生,并在界面上显示出来。同时,该学生的点名次数和最近一次点名时间也会更新到Excel文件中。这一步是通过pandas模块实现的,它能够快速读取和处理Excel文件。

此外,程序还提供了添加新学生的功能。用户可以通过输入新学生的姓名,然后点击“添加学生”按钮将其添加到Excel文件中。这一步也是通过pandas模块实现的,它可以方便地增加新的数据行。

  1. 程序代码解析

程序代码非常简单,注释详细,对于初学者来说非常友好。下面我们来逐步分析该程序的主要功能和代码实现。

首先,程序读取Excel文件并进行检查:

import pandas as pd
import random
import tkinter as tk
import datetime
import os

STUDENT_FILE = '学生名单.xlsx'

# 检查文件和表头是否存在,如果不存在则创建新的文件和表头
if not os.path.exists(STUDENT_FILE) or not {'姓名', '点名次数', '最近点名时间'}.issubset(set(pd.read_excel(STUDENT_FILE).columns)):
    df = pd.DataFrame(columns=['姓名', '点名次数', '最近点名时间'])
    df.to_excel(STUDENT_FILE, index=False)
else:
    # 读取Excel文件
    df = pd.read_excel(STUDENT_FILE)

接着,程序创建了一个Tkinter窗口和多个标签、按钮和文本框:

# 创建主窗口
root = tk.Tk()
root.title('学生点名程序')

# 创建标签1并放在主窗口中上方
label1 = tk.Label(root, text='请点击“开始点名”按钮', font=('Arial', 24))
label1.pack(expand=True)

# 创建标签2并放在主窗口中下方
label2 = tk.Label(root, text='', font=('Arial', 18))
label2.pack(pady=20)

# 点名函数
def roll_call():
    name = random.choice(df['姓名'])
    now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    df.loc[df['姓名'] == name, ['点名次数', '最近点名时间']] += 1, now
    update_label(name)

# 创建按钮1并放置在标签下方
button1 = tk.Button(root, text='开始点名', command=roll_call, font=('Arial', 18))
button1.pack(pady=20)

def add_student():
    name = entry.get().strip()
    if name:
        # 增加默认值
        df.loc[df.shape[0]] = [name, 0, '']
        df.to_excel(STUDENT_FILE, index=False)
        entry.delete(0, tk.END)

程序还提供了更新标签的函数,用于在界面上显示被点名的学生和该学生的点名次数和最近点名时间:

def update_label(name):
    count, time = df.loc[df['姓名'] == name, ['点名次数', '最近点名时间']].values[0]
    label1.config(text='被点名的学生是:{}'.format(name))
    label2.config(text='{} 已被点名 {} 次,最近一次是在 {}'.format(name, count, time))

最后是添加新学生的功能,可以通过输入新学生的姓名,然后点击“添加学生”按钮将其添加到Excel文件中:

# 添加新学生函数
def add_student():
    name = entry.get().strip()
    if name:
        # 增加默认值
        df.loc[df.shape[0]] = [name, 0, '']
        df.to_excel(STUDENT_FILE, index=False)
        entry.delete(0, tk.END)

上就是本篇博客所介绍的学生点名程序。通过这个程序,初学者可以学习到Python GUI编程的基础知识,以及pandas模块的使用方法。

读完之后点个关注呗!

你们的萧萧吖!!!

猜你喜欢

转载自blog.csdn.net/m0_55813592/article/details/130540913