用python编写一个图形用户界面,实现通讯录的增加,删除,查找,改动,四个功能。将名字和号码显示出来。给出完整代码
时间: 2024-12-17 22:24:51 浏览: 10
在Python中,我们可以使用Tkinter库来创建一个简单的图形用户界面(GUI)来实现通讯录的基本功能。以下是完整的代码示例:
```python
import tkinter as tk
from tkinter import messagebox
# 定义通讯录数据结构
class AddressBook:
def __init__(self):
self.contacts = []
# 添加联系人
def add_contact(self, name, number):
self.contacts.append({"name": name, "number": number})
# 删除联系人
def delete_contact(self, name):
for contact in self.contacts:
if contact["name"] == name:
self.contacts.remove(contact)
break
# 查找联系人
def find_contact(self, name):
for contact in self.contacts:
if contact["name"] == name:
return contact
return None
# 修改联系人信息
def update_contact(self, old_name, new_name, new_number):
for i, contact in enumerate(self.contacts):
if contact["name"] == old_name:
self.contacts[i]["name"] = new_name
self.contacts[i]["number"] = new_number
break
# 创建GUI窗口
def create_window(root):
frame = tk.Frame(root)
frame.pack(pady=10)
# 添加联系人输入框
name_label = tk.Label(frame, text="姓名:")
name_entry = tk.Entry(frame)
name_label.grid(row=0, column=0, padx=5)
name_entry.grid(row=0, column=1)
number_label = tk.Label(frame, text="电话号码:")
number_entry = tk.Entry(frame)
number_label.grid(row=1, column=0, padx=5)
number_entry.grid(row=1, column=1)
# 功能按钮
add_button = tk.Button(frame, text="添加", command=lambda: add_to_book())
add_button.grid(row=2, column=1, pady=5)
del_button = tk.Button(frame, text="删除", command=lambda: delete_from_book(name_entry.get()))
del_button.grid(row=3, column=1, pady=5)
search_button = tk.Button(frame, text="查找", command=lambda: show_contact(find_in_book(name_entry.get())))
search_button.grid(row=4, column=1, pady=5)
update_button = tk.Button(frame, text="修改", command=lambda: update_book(old_name_entry.get(), new_name_entry.get(), new_number_entry.get()))
update_button.grid(row=5, column=1, pady=5)
# 显示联系人列表
contact_listbox = tk.Listbox(frame, width=30, height=10)
contact_listbox.grid(row=6, column=0, columnspan=2)
# 更新联系人列表
def refresh_list():
contact_listbox.delete(0, tk.END)
for contact in address_book.contacts:
contact_listbox.insert(tk.END, f"{contact['name']}: {contact['number']}")
refresh_list()
root.bind("<Return>", lambda event: add_to_book()) # 回车键添加联系人
# 实例化通讯录
global address_book
address_book = AddressBook()
# 添加联系人到通讯录
def add_to_book():
name = name_entry.get()
number = number_entry.get()
if not (name and number):
messagebox.showerror("错误", "请输入完整的姓名和电话号码")
else:
address_book.add_contact(name, number)
refresh_list()
# 删除联系人
def delete_from_book(name):
if name:
address_book.delete_contact(name)
refresh_list()
# 查找联系人并显示
def find_in_book(name):
result = address_book.find_contact(name)
if result is None:
messagebox.showinfo("结果", f"未找到名为'{name}'的联系人")
else:
return result["name"]
# 更新联系人
def update_book(old_name, new_name, new_number):
if old_name:
address_book.update_contact(old_name, new_name, new_number)
refresh_list()
# 主函数
if __name__ == "__main__":
root = tk.Tk()
root.title("通讯录管理")
create_window(root)
root.mainloop()
```
这个脚本创建了一个基本的GUI,包含了添加、删除、查找和修改联系人的功能。注意,在实际应用中,你可能需要更完善的数据验证和错误处理。运行这段代码,你应该能看到一个包含这些功能的小型通讯录应用。
阅读全文