在使用text文本的通讯录的基础之上进行了改进
使用GUI图形界面
之后打算再研究一下用数据库记录数据
上篇的通讯录PythonPython 实例:手机通讯录(使用text文本记录数据)
下面是运行截图:
还有很多细节就不一,一演示了
单纯应付一下期末的作业
代码直接复制粘贴运行就可以使用了
import os
import tkinter
import json
import tkinter.messagebox
class MainForm:
def __init__(self):
root = tkinter.Tk()# 根窗体
# 标题名称
root.title('通讯录')
# 设置窗体初始大小
root.geometry("650x550")
# 设置窗体不可拉升
root.resizable(width=False, height=False)
# 添加新联系人
def handler_1(event):
def newinfo(event):
name = name_str.get()
phone = phone_num.get()
mail = mail_adr.get()
address = adr_str.get()
if name==""or phone==" " or mail==" " or address==" ":
tkinter.messagebox.showerror('错误', '所填信息都不能为空')
else:
card_dict = {
"姓名": name, "手机号": phone,
"邮箱": mail, "地址": address}
f = open("通讯录.txt", mode='a+', encoding='utf-8')
# 将字典转换为str,然后再使用write()写入到通讯录的文本文件中
f.write(str(card_dict) + '\n')
f.close()
tkinter.messagebox.showinfo('消息提示框',f'添加“{
name}“为联系人成功!')
# 注册成功关闭注册框
window_add.destroy()
# 新建注册界面
window_add = tkinter.Toplevel(root)
window_add.geometry('300x300')
window_add.title('注册')
#姓名
name_str = tkinter.StringVar()
tkinter.Label(window_add, text='请输入姓 名:').place(x=10, y=10)
tkinter.Entry(window_add, textvariable=name_str).place(x=110, y=10)
#手机号
phone_num = tkinter.StringVar()
tkinter.Label(window_add, text='请输入手机号:').place(x=10, y=50)
tkinter.Entry(window_add, textvariable=phone_num).place(x=110, y=50)
#邮箱
mail_adr = tkinter.StringVar()
tkinter.Label(window_add, text='请输入邮 箱:').place(x=10, y=90)
tkinter.Entry(window_add, textvariable=mail_adr).place(x=110, y=90)
#地址
adr_str= tkinter.StringVar()
tkinter.Label(window_add, text='请输入地 址:').place(x=10, y=130)
tkinter.Entry(window_add, textvariable=adr_str).place(x=110, y=130)
# 确认注册按钮及位置
confirm_button = tkinter.Button(window_add, text='确认添加',font=('黑体',15,'bold'))
confirm_button.bind("<Button-1>",newinfo)
confirm_button.place(x=100, y=180)
# 查看联系人
def handler_2(event):
# 窗体设置
window_all = tkinter.Toplevel(root)
window_all.geometry('600x400')
window_all.title