第一步:编辑程序,保存为address_list.py
import easygui as g
import re
col_name = ['姓名']
col_pinyin = ['拼音']
col_department = ['部门']
col_mobile = ['手机']
##----定义一个初始化字典的函数,输入两个(值函数,key函数),输入一个字典{key:value}
def dict_init(target,base):
dict_target = {}
for i in range(len(base)):
if target[i]:
dict_target[base[i]] = target[i]
else:
dict_target[base[i]] = '无'
return dict_target
dict_mobile = dict_init(col_mobile,col_pinyin)
dict_name = dict_init(col_name,col_pinyin)
dict_department = dict_init(col_department,col_pinyin)
##----定义初始化查找界面
def request():
temp = g.enterbox('请输入要查找的联系人的姓名(拼音首字母):','通讯录_byNext')
if temp:
index = list(temp)
return index
else:
return 0
##----定义匹配逻辑函数
def match(li_data,database):
strdata = "\n".join(database)
if len(li_data) == 3:
str_1 = r'\n{temp1}.+?_?{temp2}.+?_?{temp3}.*_\d+'.format(temp1=li_data[0],temp2=li_data[1], temp3=li_data[2])
match_result = re.findall(str_1,strdata)
return (match_result,len(li_data))
elif len(li_data) == 2:
str_2 =r'\n{temp1}.+?_{temp2}.+?_?\d+'.format(temp1 = li_data[0],temp2 = li_data[1])
match_result = re.findall(str_2,strdata)
return (match_result,len(li_data)) ##----返回两个值,第2个值用来判断后边的名字
else:
return 0
##----主程序
while 1:
find_name = request() ##----输入的拼音首字母list
if find_name:
try:
result_pinyin = match(find_name,col_pinyin)[0]
except:
g.msgbox('找不到这个人!\n请重新输入名字...\n一定名字全拼的【首字母】哦\n按【OK】或回车重新输入','错误信息')
continue
if result_pinyin: ##----判断输入的拼音是否超过3个
person = 0
output = ''
for each in result_pinyin:
each_index = each[1:]
try:
result_mobile = dict_mobile[each_index]
result_name = dict_name[each_index]
result_department = dict_department[each_index]
if len(result_name) == match(find_name,col_pinyin)[1]: ##----通过名字的长短来判断是否为所查找的对象
output += result_department+'--【'+result_name+'】的手机号码为:'+str(int(result_mobile))+'\n\n'
person +=1
except:
break
if person:
confirm = g.boolbox(msg = output,title = '查询结果',choices = ('continue','cancel'))
if confirm:
continue
else:
break
else:
g.msgbox('找不到这个人!\n请重新输入名字...\n一定名字全拼的【首字母】哦\n按【OK】或回车重新输入','错误信息')
continue
else:
g.msgbox('找不到这个人!\n请重新输入名字...\n一定名字全拼的【首字母】哦\n按【OK】或回车重新输入','错误信息')
continue
else:
break
第二步:制作ico图标文件
这里推荐使用这个软件,首先参考stackoverflow制作几个不同尺寸的图标文件,转换为.ico格式,然后将几个不同尺寸的ico文件合并为一个,通过这个软件下载地址:点击打开链接,使用方法很简单:文件--》添加图像,然后保存就可以了
第三步:
pyinstaller 打包 为exe文件
1、C:\python\scripts\pip pyinstaller
2、C:\python\scripts\pyinstaller -F -w -ico yourico.ico address_list.py
最后,C:\python\scripts\dist文件夹中,就可以找到address_list.exe文件了
补充:不知道为什么,.exe在某些系统上运行会出现【无法定位程序输入点ucrtbase.terminate于动态链接库api-ms-win-crt-runtime-|1-1-0.dll】的错误,只需要下载vc_redist.x64,安装一下,完美解决!