从零开始,开发一个查找电话的小程序,太有成就感了!

本文档详细介绍了如何从零开始,利用Python编写一个电话查找程序,并通过PyInstaller将其打包成exe文件。首先,编辑address_list.py程序,接着制作ico图标文件,再用PyInstaller进行打包。最后,程序打包完成后,在指定目录下可以找到exe文件,但需要注意在某些系统上可能需要安装vc_redist.x64来解决运行时错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步:编辑程序,保存为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,安装一下,完美解决!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值