import tkinter as tkfrom tkinter import ttkfrom tkinter import filedialogimport pandas as pdimport matplotlibpyplot as pltclass ScoreManagementSystem def __init__self master selfmaster = mas
完整代码如下:
import tkinter as tk
from tkinter import ttk
from tkinter import filedialog
import pandas as pd
import matplotlib.pyplot as plt
class ScoreManagementSystem:
def __init__(self, master):
self.master = master
self.master.title("成绩管理系统")
self.master.geometry("800x600")
# 初始化数据
self.data = pd.DataFrame(columns=["班级", "学号", "姓名", "成绩"])
# 创建菜单栏
menubar = tk.Menu(self.master)
filemenu = tk.Menu(menubar, tearoff=0)
filemenu.add_command(label="打开", command=self.open_file)
filemenu.add_command(label="保存", command=self.save_file)
filemenu.add_separator()
filemenu.add_command(label="退出", command=self.master.quit)
menubar.add_cascade(label="文件", menu=filemenu)
self.master.config(menu=menubar)
# 创建工具栏
toolbar = ttk.Frame(self.master)
ttk.Button(toolbar, text="新增", command=self.add_score).pack(side=tk.LEFT, padx=5, pady=5)
ttk.Button(toolbar, text="修改", command=self.modify_score).pack(side=tk.LEFT, padx=5, pady=5)
ttk.Button(toolbar, text="删除", command=self.delete_score).pack(side=tk.LEFT, padx=5, pady=5)
ttk.Button(toolbar, text="排序", command=self.sort_score).pack(side=tk.LEFT, padx=5, pady=5)
ttk.Button(toolbar, text="查找", command=self.find_score).pack(side=tk.LEFT, padx=5, pady=5)
ttk.Button(toolbar, text="图表", command=self.plot_score).pack(side=tk.LEFT, padx=5, pady=5)
ttk.Button(toolbar, text="导出", command=self.export_score).pack(side=tk.LEFT, padx=5, pady=5)
toolbar.pack(side=tk.TOP, fill=tk.X)
# 创建表格
self.table = ttk.Treeview(self.master, columns=["班级", "学号", "姓名", "成绩"], show="headings")
self.table.column("班级", width=100)
self.table.column("学号", width=100)
self.table.column("姓名", width=100)
self.table.column("成绩", width=100)
self.table.heading("班级", text="班级")
self.table.heading("学号", text="学号")
self.table.heading("姓名", text="姓名")
self.table.heading("成绩", text="成绩")
self.table.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
# 绑定事件
self.table.bind("<Double-1>", self.modify_score)
def open_file(self):
filename = filedialog.askopenfilename(filetypes=[("Excel文件", "*.xlsx"), ("CSV文件", "*.csv")])
if filename:
try:
self.data = pd.read_excel(filename)
self.show_data()
except Exception as e:
tk.messagebox.showerror("错误", str(e))
def save_file(self):
filename = filedialog.asksaveasfilename(filetypes=[("Excel文件", "*.xlsx"), ("CSV文件", "*.csv")])
if filename:
try:
self.data.to_excel(filename, index=False)
except Exception as e:
tk.messagebox.showerror("错误", str(e))
def add_score(self):
# 创建对话框
dialog = tk.Toplevel(self.master)
dialog.title("新增成绩")
dialog.geometry("300x200")
# 创建表单
ttk.Label(dialog, text="班级").grid(row=0, column=0, padx=5, pady=5)
ttk.Entry(dialog, textvariable=tk.StringVar()).grid(row=0, column=1, padx=5, pady=5)
ttk.Label(dialog, text="学号").grid(row=1, column=0, padx=5, pady=5)
ttk.Entry(dialog, textvariable=tk.StringVar()).grid(row=1, column=1, padx=5, pady=5)
ttk.Label(dialog, text="姓名").grid(row=2, column=0, padx=5, pady=5)
ttk.Entry(dialog, textvariable=tk.StringVar()).grid(row=2, column=1, padx=5, pady=5)
ttk.Label(dialog, text="成绩").grid(row=3, column=0, padx=5, pady=5)
ttk.Entry(dialog, textvariable=tk.StringVar()).grid(row=3, column=1, padx=5, pady=5)
# 创建按钮
ttk.Button(dialog, text="确定", command=lambda: self.add_score_confirm(dialog)).grid(row=4, column=0, columnspan=2, padx=5, pady=5)
def add_score_confirm(self, dialog):
# 获取表单数据
class_name = dialog.winfo_children()[1].get()
student_id = dialog.winfo_children()[3].get()
student_name = dialog.winfo_children()[5].get()
score = dialog.winfo_childre
原文地址: https://www.cveoy.top/t/topic/hoVM 著作权归作者所有。请勿转载和采集!