import tkinter as tkfrom tkinter import filedialog messageboximport pandas as pdimport matplotlibpyplot as pltfrom matplotlibbackendsbackend_tkagg import FigureCanvasTkAggclass ScoreManagementSystem
在ScoreManagementSystem类中的search_data方法中添加以下代码即可支持按照学号和姓名查找成绩:
def search_data(self, keywords):
if self.data is not None:
try:
result = self.data.copy()
for key, value in keywords.items():
if key == '学号' or key == '姓名':
result = result[result[key] == value]
else:
result = result[result[key].str.contains(value, case=False, regex=False)]
return result
except Exception as e:
messagebox.showerror("错误", str(e))
return None
然后在ScoreManagementGUI类中的search_data方法中添加学号和姓名的输入框,代码如下:
def search_data(self):
top = tk.Toplevel()
top.title("Search Data")
class_label = tk.Label(top, text="Class:")
class_label.pack()
class_entry = tk.Entry(top)
class_entry.pack()
student_id_label = tk.Label(top, text="Student ID:")
student_id_label.pack()
student_id_entry = tk.Entry(top)
student_id_entry.pack()
score_label = tk.Label(top, text="Score:")
score_label.pack()
score_entry = tk.Entry(top)
score_entry.pack()
name_label = tk.Label(top, text="Name:")
name_label.pack()
name_entry = tk.Entry(top)
name_entry.pack()
search_button = tk.Button(top, text="Search", command=lambda: self.handle_search_data(top, class_entry.get(), student_id_entry.get(), score_entry.get(), name_entry.get()))
search_button.pack()
然后在handle_search_data方法中将学号和姓名添加到keywords字典中,代码如下:
def handle_search_data(self, top, class_value, student_id, score, name):
keywords = {'姓名': name, '班级': class_value, '成绩': score}
if student_id:
keywords['学号'] = student_id
result = self.system.search_data(keywords)
top.destroy()
if result is not None:
top = tk.Toplevel()
top.title("查询结果")
result_text = tk.Text(top)
result_text.pack()
result_text.insert(tk.END, result.to_string(index=False))
else:
messagebox.showinfo("查询结果", "没有数据匹配")
``
原文地址: https://www.cveoy.top/t/topic/hoV8 著作权归作者所有。请勿转载和采集!