关于#python#的问题:用Tkinter写的输入框,其实的要用字符串,列表写,查看一个学生信息,查看所以学生信息

用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只能对应一个学生对象。
#未完待续,如有帮助,恭请采纳!

效果如图

img

代码如下如有帮助给个采纳谢谢

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()


要用字符串函数,字典函数,列表函数写。。。。亲,建议你直接发你们老师布置作业的原文吧,你这错别字真多