设计了一个窗体,实现了一个简单的学生基本信息管理功能,可以完成对学生基本信息的增加、删除、修改功能,学生基本信息包括学号、姓名、性别、班级、院系、身份证号码、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事件循环
展示: