用Tkinter写的输入框,按键,窗口等,要用字符串,字典,列表写,包括添加,删除,修改,查看一个学生信息,查看所以学生信息。
参考下下面简单示例:
import tkinter as tk
class Student:
def __init__(self, id, name, age):
self.id = id
self.name = name
self.age = age
class Application(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.create_widgets()
self.students = {}
def create_widgets(self):
# 创建标签和文本框
self.id_label = tk.Label(self, text="ID")
self.id_label.pack(side="left")
self.id_entry = tk.Entry(self)
self.id_entry.pack(side="left")
self.name_label = tk.Label(self, text="Name")
self.name_label.pack(side="left")
self.name_entry = tk.Entry(self)
self.name_entry.pack(side="left")
self.age_label = tk.Label(self, text="Age")
self.age_label.pack(side="left")
self.age_entry = tk.Entry(self)
self.age_entry.pack(side="left")
# 创建添加按钮
self.add_button = tk.Button(self, text="Add", command=self.add_student)
self.add_button.pack(side="bottom")
# 创建列表框和查看按钮
self.listbox = tk.Listbox(self)
self.listbox.pack()
# 填充学生信息列表框
for student in self.students:
self.listbox.insert("end", student)
# 创建查看按钮,并绑定回调函数
self.view_button = tk.Button(self, text="View", command=lambda: self.view_student())
self.view_button.pack(side="bottom")
def add_student(self):
# 从文本框中获取学生信息并创建学生对象
id = self.id_entry.get()
name = self.name_entry.get()
age = self.age_entry.get()
student = Student(id, name, age)
# 将学生信息添加到字典中,并添加到列表框中显示出来
self.students[id] = [student]
self.listbox.insert("end", id)
def view_student(self):
# 从列表框中获取选中的学生信息并显示出来
selection = self.listbox.curselection()
if len(selection) == 1:
index = int(selection[0])
id = self.listbox.get(index)
if id in self.students:
student = self.students[id][0] # 获取第一个学生对象,因为一个ID只能对应一个学生对象。
#未完待续,如有帮助,恭请采纳!
效果如图
代码如下如有帮助给个采纳谢谢
import tkinter as tk
class StudentRecord:
def __init__(self, name='', age='', gender='', score=0):
self.name = name
self.age = age
self.gender = gender
self.score = score
class StudentDB:
def __init__(self):
self.records = []
def add_record(self, record):
self.records.append(record)
def remove_record(self, index):
del self.records[index]
def modify_record(self, index, record):
self.records[index] = record
def get_record(self, index):
return self.records[index]
def get_all_records(self):
return self.records
class StudentMainWindow:
def __init__(self, db):
self.db = db
self.window = tk.Tk()
self.window.title('学生管理系统')
self.window.geometry('400x700')
self.name_label = tk.Label(self.window, text='姓名:')
self.name_entry = tk.Entry(self.window)
self.age_label = tk.Label(self.window, text='年龄:')
self.age_entry = tk.Entry(self.window)
self.gender_label = tk.Label(self.window, text='性别:')
self.gender_entry = tk.Entry(self.window)
self.score_label = tk.Label(self.window, text='成绩:')
self.score_entry = tk.Entry(self.window)
self.name_label.pack()
self.name_entry.pack()
self.age_label.pack()
self.age_entry.pack()
self.gender_label.pack()
self.gender_entry.pack()
self.score_label.pack()
self.score_entry.pack()
self.index_label = tk.Label(self.window, text='编号:')
self.index_entry = tk.Entry(self.window)
self.index_label.pack()
self.index_entry.pack()
self.add_button = tk.Button(self.window, text='添加学生', command=self.add_student)
self.del_button = tk.Button(self.window, text='删除学生', command=self.delete_student)
self.modify_button = tk.Button(self.window, text='修改学生', command=self.modify_student)
self.get_button = tk.Button(self.window, text='查看学生', command=self.get_student)
self.get_all_button = tk.Button(self.window, text='查看所有学生', command=self.get_all_students)
self.add_button.pack()
self.del_button.pack()
self.modify_button.pack()
self.get_button.pack()
self.get_all_button.pack()
self.status_label = tk.Label(self.window, text='')
self.status_label.pack()
def add_student(self):
name = self.name_entry.get()
age = self.age_entry.get()
gender = self.gender_entry.get()
score = self.score_entry.get()
if not name or not age or not gender or not score:
self.status_label.config(text='请输入完整的学生信息')
return
try:
age = int(age)
score = float(score)
except ValueError:
self.status_label.config(text='年龄和成绩必须为数字')
return
record = StudentRecord(name, age, gender, score)
self.db.add_record(record)
self.status_label.config(text='学生 %s 添加成功' % name)
self.clear_entries()
def delete_student(self):
try:
index = int(self.index_entry.get())
except ValueError:
self.status_label.config(text='请输入正确的学生编号')
return
if index < 0 or index >= len(self.db.get_all_records()):
self.status_label.config(text='学生编号超出范围')
return
name = self.db.get_record(index).name
self.db.remove_record(index)
self.clear_entries()
self.status_label.config(text='学生 %s 删除成功' % name)
def modify_student(self):
try:
index = int(self.index_entry.get())
except ValueError:
self.status_label.config(text='请输入正确的学生编号')
return
if index < 0 or index >= len(self.db.get_all_records()):
self.status_label.config(text='学生编号超出范围')
return
name = self.name_entry.get()
age = self.age_entry.get()
gender = self.gender_entry.get()
score = self.score_entry.get()
if not name or not age or not gender or not score:
self.status_label.config(text='请输入完整的学生信息')
return
try:
age = int(age)
score = float(score)
except ValueError:
self.status_label.config(text='年龄和成绩必须为数字')
return
record = StudentRecord(name, age, gender, score)
self.db.modify_record(index, record)
self.status_label.config(text='学生 %s 修改成功' % name)
self.clear_entries()
def get_student(self):
try:
index = int(self.index_entry.get())
except ValueError:
self.status_label.config(text='请输入正确的学生编号')
return
if index < 0 or index >= len(self.db.get_all_records()):
self.status_label.config(text='学生编号超出范围')
return
record = self.db.get_record(index)
self.show_record(index, record)
def get_all_students(self):
records = self.db.get_all_records()
if not records:
self.status_label.config(text='没有学生信息')
else:
self.clear_entries()
for index, record in enumerate(records):
self.show_record(index, record)
num_of_students = len(records)
self.status_label.config(text='共有%d名学生' % num_of_students)
# 在 Label 中展示所有学生信息
all_students_info = ''
for record in records:
all_students_info += '姓名:%s 年龄:%d 性别:%s 成绩:%.1f\n' % (
record.name, record.age, record.gender, record.score)
self.all_students_label.config(text=all_students_info)
def __init__(self, db):
self.db = db
self.window = tk.Tk()
self.window.title('学生管理系统')
self.window.geometry('600x500')
self.name_label = tk.Label(self.window, text='姓名:')
self.name_entry = tk.Entry(self.window)
self.age_label = tk.Label(self.window, text='年龄:')
self.age_entry = tk.Entry(self.window)
self.gender_label = tk.Label(self.window, text='性别:')
self.gender_entry = tk.Entry(self.window)
self.score_label = tk.Label(self.window, text='成绩:')
self.score_entry = tk.Entry(self.window)
self.name_label.pack()
self.name_entry.pack()
self.age_label.pack()
self.age_entry.pack()
self.gender_label.pack()
self.gender_entry.pack()
self.score_label.pack()
self.score_entry.pack()
self.index_label = tk.Label(self.window, text='编号:')
self.index_entry = tk.Entry(self.window)
self.index_label.pack()
self.index_entry.pack()
self.add_button = tk.Button(self.window, text='添加学生', command=self.add_student)
self.del_button = tk.Button(self.window, text='删除学生', command=self.delete_student)
self.modify_button = tk.Button(self.window, text='修改学生', command=self.modify_student)
self.get_button = tk.Button(self.window, text='查看学生', command=self.get_student)
self.get_all_button = tk.Button(self.window, text='查看所有学生', command=self.get_all_students)
self.add_button.pack()
self.del_button.pack()
self.modify_button.pack()
self.get_button.pack()
self.get_all_button.pack()
self.status_label = tk.Label(self.window, text='')
self.status_label.pack()
# 添加展示所有学生的 Label
self.all_students_label = tk.Label(self.window, text='', font=('Arial', 12))
self.all_students_label.pack()
def show_record(self, index, record):
self.clear_entries()
self.index_entry.insert(0, str(index))
self.name_entry.insert(0, record.name)
self.age_entry.insert(0, str(record.age))
self.gender_entry.insert(0, record.gender)
self.score_entry.insert(0, str(record.score))
def clear_entries(self):
self.index_entry.delete(0, tk.END)
self.name_entry.delete(0, tk.END)
self.age_entry.delete(0, tk.END)
self.gender_entry.delete(0, tk.END)
self.score_entry.delete(0, tk.END)
def run(self):
self.window.mainloop()
if __name__ == '__main__':
db = StudentDB()
app = StudentMainWindow(db)
app.run()
要用字符串函数,字典函数,列表函数写。。。。亲,建议你直接发你们老师布置作业的原文吧,你这错别字真多