用python基于GUI编写一个50行左右的通讯录管理系统
时间: 2023-09-14 09:03:52 浏览: 93
好的,下面是一个简单的通讯录管理系统,使用Python 3和Tkinter库来实现GUI界面。这个系统可以添加、编辑、删除联系人,并且可以通过搜索功能查找联系人。
```python
import tkinter as tk
class Contact:
def __init__(self, name, phone, email):
self.name = name
self.phone = phone
self.email = email
class ContactBook:
def __init__(self):
self.contacts = []
def add_contact(self, contact):
self.contacts.append(contact)
def delete_contact(self, contact):
self.contacts.remove(contact)
def edit_contact(self, old_contact, new_contact):
index = self.contacts.index(old_contact)
self.contacts[index] = new_contact
def search_contact(self, name):
for contact in self.contacts:
if contact.name == name:
return contact
return None
class GUI:
def __init__(self, master):
self.master = master
self.master.title("通讯录管理系统")
self.contact_book = ContactBook()
# 创建GUI组件
self.name_label = tk.Label(master, text="姓名")
self.name_label.grid(row=0, column=0)
self.phone_label = tk.Label(master, text="电话")
self.phone_label.grid(row=1, column=0)
self.email_label = tk.Label(master, text="邮箱")
self.email_label.grid(row=2, column=0)
self.name_entry = tk.Entry(master)
self.name_entry.grid(row=0, column=1)
self.phone_entry = tk.Entry(master)
self.phone_entry.grid(row=1, column=1)
self.email_entry = tk.Entry(master)
self.email_entry.grid(row=2, column=1)
self.add_button = tk.Button(master, text="添加", command=self.add_contact)
self.add_button.grid(row=3, column=0)
self.edit_button = tk.Button(master, text="编辑", command=self.edit_contact)
self.edit_button.grid(row=3, column=1)
self.delete_button = tk.Button(master, text="删除", command=self.delete_contact)
self.delete_button.grid(row=3, column=2)
self.search_button = tk.Button(master, text="搜索", command=self.search_contact)
self.search_button.grid(row=4, column=2)
self.result_label = tk.Label(master, text="")
self.result_label.grid(row=5, columnspan=3)
# 添加联系人
def add_contact(self):
name = self.name_entry.get()
phone = self.phone_entry.get()
email = self.email_entry.get()
contact = Contact(name, phone, email)
self.contact_book.add_contact(contact)
self.result_label.config(text="添加联系人成功")
# 编辑联系人
def edit_contact(self):
name = self.name_entry.get()
phone = self.phone_entry.get()
email = self.email_entry.get()
contact = Contact(name, phone, email)
old_contact = self.contact_book.search_contact(name)
if old_contact:
self.contact_book.edit_contact(old_contact, contact)
self.result_label.config(text="编辑联系人成功")
else:
self.result_label.config(text="联系人不存在")
# 删除联系人
def delete_contact(self):
name = self.name_entry.get()
contact = self.contact_book.search_contact(name)
if contact:
self.contact_book.delete_contact(contact)
self.result_label.config(text="删除联系人成功")
else:
self.result_label.config(text="联系人不存在")
# 搜索联系人
def search_contact(self):
name = self.name_entry.get()
contact = self.contact_book.search_contact(name)
if contact:
self.phone_entry.delete(0, tk.END)
self.phone_entry.insert(0, contact.phone)
self.email_entry.delete(0, tk.END)
self.email_entry.insert(0, contact.email)
self.result_label.config(text="")
else:
self.result_label.config(text="联系人不存在")
root = tk.Tk()
gui = GUI(root)
root.mainloop()
```
在这个程序中,我们定义了三个类:Contact, ContactBook, 和 GUI。 Contact类表示一个联系人, ContactBook类表示联系人本身,而GUI类则是一个具有添加、编辑、删除和搜索联系人功能的GUI界面。
在GUI类的`__init__()`方法中,我们创建了所有必要的GUI组件,并通过调用`add_contact()`、`edit_contact()`、`delete_contact()`和`search_contact()`方法来处理用户的请求。这些方法通过调用ContactBook类的相应方法来添加、编辑、删除或搜索联系人。最后,在GUI类的`__init__()`方法中,我们创建了一个ContactBook实例,用于存储所有联系人。
阅读全文