写一个可以增删改查通讯录的gui界面,并将结果导出后缀为csv格式的文件
时间: 2024-10-04 10:01:33 浏览: 6
创建一个GUI界面用于操作通讯录,通常需要利用一些图形用户界面库,如Python的Tkinter、PyQt或者Java的Swing或JavaFX。以下是一个简单的例子,我们将展示如何使用Python的Tkinter库创建一个基础的通讯录管理应用:
```python
import tkinter as tk
from tkinter import filedialog
import csv
# 定义通讯录数据结构
class Contact:
def __init__(self, name, phone):
self.name = name
self.phone = phone
class AddressBook:
def __init__(self):
self.contacts = []
# 添加联系人
def add_contact(self, name, phone):
contact = Contact(name, phone)
self.contacts.append(contact)
# 删除联系人
def delete_contact(self, name):
for contact in self.contacts:
if contact.name == name:
self.contacts.remove(contact)
break
# 修改联系人信息
def update_contact(self, name, new_phone):
for contact in self.contacts:
if contact.name == name:
contact.phone = new_phone
break
# 导出到CSV
def export_to_csv(self, filename):
with open(filename, 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(['Name', 'Phone'])
for contact in self.contacts:
writer.writerow([contact.name, contact.phone])
# GUI部分
root = tk.Tk()
app = AddressBook()
def on_add_click():
name = entry_name.get()
phone = entry_phone.get()
app.add_contact(name, phone)
print('Contact added.')
def on_delete_click():
name = entry_name.get()
app.delete_contact(name)
print('Contact deleted.')
def on_update_click():
name = entry_name.get()
new_phone = entry_new_phone.get()
app.update_contact(name, new_phone)
print('Contact updated.')
def on_export_click():
filename = filedialog.asksaveasfilename(filetypes=[("CSV", "*.csv")])
if filename:
app.export_to_csv(filename)
print(f'Contacts exported to {filename}.')
# 创建UI元素
frame_main = tk.Frame(root)
frame_buttons = tk.Frame(root)
tk.Label(frame_main, text="Name").grid(row=0)
entry_name = tk.Entry(frame_main)
entry_name.grid(row=0, column=1)
tk.Label(frame_main, text="Phone").grid(row=1)
entry_phone = tk.Entry(frame_main)
entry_phone.grid(row=1, column=1)
add_button = tk.Button(frame_buttons, text="Add", command=on_add_click)
delete_button = tk.Button(frame_buttons, text="Delete", command=on_delete_click)
update_button = tk.Button(frame_buttons, text="Update", command=on_update_click)
export_button = tk.Button(frame_buttons, text="Export", command=on_export_click)
add_button.pack(side=tk.LEFT)
delete_button.pack(side=tk.LEFT)
update_button.pack(side=tk.LEFT)
export_button.pack(side=tk.LEFT)
frame_main.pack()
frame_buttons.pack(pady=10)
root.mainloop()
```
这个简单示例展示了如何通过按钮添加、删除、更新联系人以及导出到CSV。用户需要输入姓名和电话号码,然后点击相应的按钮。实际应用可能需要更复杂的数据验证和错误处理。