Orla_ccc 2023-06-21 11:45 采纳率: 100%
浏览 36
已结题

如何在python中用tkinter设计一个学生通讯录,可以添加、删除、查看、修改、查找里面信息?

在python中用tkinter设计一个学生通讯录,可以添加、删除、查看、修改、查找里面信息

  • 写回答

4条回答 默认 最新

  • 瞬间的未来式 2023-06-21 11:50
    关注

    该回答引用chatgpt:

    img

    import tkinter as tk
    from tkinter import simpledialog, messagebox
    
    
    class StudentContactApp:
        def __init__(self):
            self.root = tk.Tk()
            self.root.title("学生通讯录")
    
            self.students = []
    
            self.create_widgets()
    
        def create_widgets(self):
            # 查找框和按钮
            search_frame = tk.Frame(self.root)
            search_frame.pack(pady=10)
    
            self.search_entry = tk.Entry(search_frame)
            self.search_entry.pack(side=tk.LEFT, padx=5)
    
            search_button = tk.Button(search_frame, text="搜索", command=self.search_student)
            search_button.pack(side=tk.LEFT)
    
            # 学生信息显示框(使用带滚动条的Listbox)
            frame = tk.Frame(self.root)
            frame.pack(pady=10)
    
            scrollbar = tk.Scrollbar(frame)
            scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
    
            self.student_listbox = tk.Listbox(frame, width=40, yscrollcommand=scrollbar.set)
            self.student_listbox.pack(side=tk.LEFT)
    
            scrollbar.config(command=self.student_listbox.yview)
    
            # 添加按钮
            add_button = tk.Button(self.root, text="添加学生", command=self.add_student)
            add_button.pack(pady=5)
    
            # 删除按钮
            delete_button = tk.Button(self.root, text="删除学生", command=self.delete_student)
            delete_button.pack(pady=5)
    
            # 修改按钮
            edit_button = tk.Button(self.root, text="修改学生", command=self.edit_student)
            edit_button.pack(pady=5)
    
            # 显示全部学生按钮
            show_all_button = tk.Button(self.root, text="显示全部学生", command=self.show_all_students)
            show_all_button.pack(pady=5)
    
        def add_student(self):
            student_name = simpledialog.askstring("添加学生", "请输入学生姓名:")
            if student_name:
                student_contact = simpledialog.askstring("添加学生", "请输入学生联系方式:")
                if student_contact:
                    student = {"姓名": student_name, "联系方式": student_contact}
                    self.students.append(student)
                    self.student_listbox.insert(tk.END, f"{student_name} - {student_contact}")
    
        def delete_student(self):
            selected_index = self.student_listbox.curselection()
            if selected_index:
                confirm = messagebox.askokcancel("删除学生", "确认删除所选学生?")
                if confirm:
                    student = self.students.pop(selected_index[0])
                    self.student_listbox.delete(selected_index)
                    messagebox.showinfo("删除成功", f"已删除学生: {student['姓名']} - {student['联系方式']}")
    
        def edit_student(self):
            selected_index = self.student_listbox.curselection()
            if selected_index:
                student = self.students[selected_index[0]]
                new_name = simpledialog.askstring("修改学生", "请输入新的学生姓名:", initialvalue=student['姓名'])
                if new_name:
                    new_contact = simpledialog.askstring("修改学生", "请输入新的学生联系方式:", initialvalue=student['联系方式'])
                    if new_contact:
                        student['姓名'] = new_name
                        student['联系方式'] = new_contact
                        self.student_listbox.delete(selected_index)
                        self.student_listbox.insert(selected_index, f"{new_name} - {new_contact}")
                        messagebox.showinfo("修改成功", f"学生信息已修改为: {new_name} - {new_contact}")
    
        def search_student(self):
            search_term = self.search_entry.get()
            if not search_term:
                self.show_all_students()
                return
    
            self.student_listbox.delete(0, tk.END)
    
            matching_students = []
            for student in self.students:
                if search_term.lower() in student['姓名'].lower() or search_term in student['联系方式']:
                    matching_students.append(student)
    
            if matching_students:
                for student in matching_students:
                    self.student_listbox.insert(tk.END, f"{student['姓名']} - {student['联系方式']}")
            else:
                messagebox.showinfo("查找结果", "未找到匹配的学生。")
    
        def show_all_students(self):
            self.student_listbox.delete(0, tk.END)
            for student in self.students:
                self.student_listbox.insert(tk.END, f"{student['姓名']} - {student['联系方式']}")
    
        def run(self):
            self.root.mainloop()
    
    
    # 创建学生通讯录应用程序并运行
    app = StudentContactApp()
    app.run()
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 6月29日
  • 已采纳回答 6月21日
  • 创建了问题 6月21日