设计了一个窗体,实现了一个简单的学生基本信息管理功能,可以完成对学生基本信息的增加、删除、修改功能,学生基本信息包括学号、姓名、性别、班级、院系、身份证号码、QQ号、手机号码、电子邮箱、宿舍、家庭住址。

源码:

from tkinter import *  # 导入Tkinter库中的所有类和方法
import tkinter.messagebox as mb  # 从Tkinter库导入消息框模块,用于显示警告或信息消息框
from tkinter import ttk  # 从Tkinter库导入ttk模块,用于访问Tk themed widget集

# 添加信息的函数
def addInfo():
    if not all([var.get() for var in vars_]):  # 检查所有输入字段是否已填写
        mb.showerror("拒绝添加", "信息不完整,请检查")  # 如果有未填写的字段,显示错误消息
        return
    tree.insert("", "end", values=[var.get() for var in vars_])  # 在树视图中添加一行,包含所有输入字段的值
    for var in vars_:  # 清空输入字段,以便下次添加
        var.set("")

# 删除信息的函数
def deleteInfo():
    selection = tree.selection()  # 获取当前选中的项目
    if not selection:
        mb.showerror("删除失败", "请选择要删除的项目")  # 如果没有选中项目,显示错误消息
        return
    tree.delete(selection)  # 删除选中的项目

# 编辑信息的函数
def editInfo():
    selected = tree.selection()  # 获取当前选中的项目
    if not selected:
        mb.showerror("编辑失败", "请选择要编辑的项目")  # 如果没有选中项目,显示错误消息
        return
    item = tree.item(selected)  # 获取选中项目的信息
    values = item["values"]  # 获取项目的值
    for var, value in zip(vars_, values):  # 将项目的值设置到输入字段中,以便编辑
        var.set(value)

root = Tk()  # 创建Tkinter窗口
root.title("学生信息管理系统")  # 设置窗口标题
root.geometry("1400x600+60+100")  # 设置窗口大小和位置
root.resizable(0,0)  # 禁止调整窗口大小

# 定义信息字段
fields = ['学号', '姓名', '性别', '班级', '院系', '身份证号码', 'QQ号', '手机号码', '电子邮箱', '宿舍', '家庭住址']
vars_ = [StringVar() for _ in fields]  # 为每个字段创建一个字符串变量

entries = []  # 存储输入框的列表
x, y = 20, 10  # 定位输入框的起始位置
# 创建标签和输入框
for i, (field, var) in enumerate(zip(fields, vars_)):
    label = Label(root, text=f"{field}:")  # 创建标签
    label.place(x=x, y=y, height=20, width=70)  # 放置标签
    entry = Entry(root, textvariable=var)  # 创建输入框,与字符串变量绑定
    entry.place(x=x+70, y=y, height=20, width=120)  # 放置输入框
    entries.append(entry)  # 将输入框添加到列表中
    # 调整下一个输入框的位置
    if i % 2 == 0:
        x += 230
    else:
        x = 20
        y += 40

# 创建树视图,用于显示信息
tree = ttk.Treeview(root, columns=fields)
for i, field in enumerate(fields):
    tree.heading(f"#{i+1}", text=field)  # 设置每列的标题
    tree.column(f"#{i+1}", width=100)  # 设置每列的宽度
tree.place(x=0, y=240, relwidth=1, relheight=0.7)  # 放置树视图

# 创建按钮并绑定相应的函数
b1 = Button(root, text="添加", command=addInfo)
b1.place(x=500, y=40, height=30, width=70)
b2 = Button(root, text="删除", command=deleteInfo)
b2.place(x=500, y=80, height=30, width=70)
b3 = Button(root, text="编辑", command=editInfo)
b3.place(x=500, y=120, height=30, width=70)

root.mainloop()  # 进入Tkinter事件循环

展示:

基于python内置库——Tkinter实现简单的学生基本信息管理功能-LMLPHP

02-14 04:21