from tkinter import * from tkinter import ttk import tkinter as tk from tkinter import messagebox win = tk.Tk() win.title("学生管理系统") win.geometry("500x600") def add_student(): name = entry_name.get() id = entry_id.get() gender = entry_gender.get() age = entry_age.get() phone = entry_phone.get() students_info.append((name, id, gender, age, phone)) refresh_treeview() clear_entries() def delete_student(): selected_items = tree.selection() if selected_items: # 获取Treeview中选中项的索引 index = int(tree.index(selected_items[0])) # 从Treeview中删除 tree.delete(selected_items[0]) # 从全局列表中根据索引删除对应的学生信息 del students_info[index] messagebox.showinfo("成功", "学生信息已删除。") else: messagebox.showinfo("提示", "请先选择一个学生信息进行删除。") def select_student_info(event): selected_item = tree.selection() if selected_item: item_values = tree.item(selected_item[0], 'values') entry_name.delete(0, tk.END) entry_id.delete(0, tk.END) entry_gender.delete(0, tk.END) entry_age.delete(0, tk.END) entry_phone.delete(0, tk.END) entry_name.insert(0, item_values[0]) entry_id.insert(0, item_values[1]) entry_gender.insert(0, item_values[2]) entry_age.insert(0, item_values[3]) entry_phone.insert(0, item_values[4]) def modify_student(): selected_item = tree.selection() if selected_item: index = tree.index(selected_item[0]) new_name = entry_name.get() new_id = entry_id.get() new_gender = entry_gender.get() new_age = entry_age.get() new_phone = entry_phone.get() students_info[index] = (new_name, new_id, new_gender, new_age, new_phone) tree.item(selected_item[0], values=(new_name, new_id, new_gender, new_age, new_phone)) clear_entries() else: messagebox.showinfo("提示", "请先选择一个学生信息进行修改。") def refresh_treeview(): for item in tree.get_children(): tree.delete(item) for student in students_info: tree.insert('', 'end', values=student) def clear_entries(): entry_name.delete(0, tk.END) entry_id.delete(0, tk.END) entry_gender.delete(0, tk.END) entry_age.delete(0, tk.END) entry_phone.delete(0, tk.END) students_info = [] entry_name = Entry(win) entry_id = Entry(win) entry_gender = Entry(win) entry_age = Entry(win) entry_phone = Entry(win) lb1 = Label(win, text="") title = Label(win, text="学生管理系统", bg="#add8e6", font=("黑体", 14)) name_label = Label(win, text="姓名:", font=("黑体", 13)) id_label = Label(win, text="学号:", font=("黑体", 13)) gender_label = Label(win, text="性别:", font=("黑体", 13)) age_label = Label(win, text="年龄:", font=("黑体", 13)) phone_label = Label(win, text="电话:", font=("黑体", 13)) btn_add = Button(win, text="添加学生信息", command=add_student) btn_delete = Button(win, text="删除学生信息", command=delete_student) btn_modify = Button(win, text="修改学生信息", command=modify_student) btn_refresh = Button(win, text="显示学生信息", command=refresh_treeview) tree = ttk.Treeview(win, columns=('姓名', '学号', '性别', '年龄', '电话'), show='headings') tree.column('姓名', width=90, anchor=CENTER) tree.column('学号', width=90, anchor=CENTER) tree.column('性别', width=90, anchor=CENTER) tree.column('年龄', width=90, anchor=CENTER) tree.column('电话', width=90, anchor=CENTER) tree.heading('姓名', text='姓名') tree.heading('学号', text='学号') tree.heading('性别', text='性别') tree.heading('年龄', text='年龄') tree.heading('电话', text='电话') tree.bind('<ButtonRelease-1>', select_student_info) lb1.place(x=0, y=30, width=300) title.place(x=0, y=0, width=500, height=70) name_label.place(x=200, y=80, width=60) id_label.place(x=200, y=120, width=60) gender_label.place(x=200, y=160, width=60) age_label.place(x=200, y=200, width=60) phone_label.place(x=200, y=240, width=60) entry_name.place(x=260, y=83, width=180, height=20) entry_id.place(x=260, y=123, width=180, height=20) entry_gender.place(x=260, y=163, width=180, height=20) entry_age.place(x=260, y=203, width=180, height=20) entry_phone.place(x=260, y=240, width=180, height=20) btn_add.place(x=30, y=80, width=120, height=30) btn_delete.place(x=30, y=130, width=120, height=30) btn_modify.place(x=30, y=180, width=120, height=30) btn_refresh.place(x=30, y=230, width=120, height=30) tree.place(x=10, y=300, width=480, height=290) win.mainloop()