• 售前

  • 售后

热门帖子
入门百科

python 制作手机归属地查询工具(附源码)

[复制链接]
北右酝 显示全部楼层 发表于 2021-10-26 13:44:11 |阅读模式 打印 上一主题 下一主题
目次


  • 一.预览

    • 1.启动
    • 2.实行查询

  • 二.源代码

    • 1.GUI
    • 2.Get_Attr

  • 三.总结
Hello,各人好,我来敷衍你们了 [捂脸],本日还是用Tkinter做一个GUI小工具,用于手机归属地查询。我将代码放在了博文中,步调打包好放在蓝奏云。

一.预览



1.启动



2.实行查询



二.源代码



1.GUI
  1. from tkinter import *
  2. from tkinter import ttk
  3. from tkinter import messagebox
  4. from Get_Attr import Get_Infos
  5. import re
  6. import threading
  7. class App:
  8.   def __init__(self):
  9.     self.root=Tk()
  10.     self.root.title('手机号码归属地查询-v1.0')
  11.     self.root.resizable(0,0)
  12.     width=410
  13.     height=390
  14.     left=(self.root.winfo_screenwidth()-width)/2
  15.     top=(self.root.winfo_screenheight()-height)/2
  16.     self.root.geometry('%dx%d+%d+%d'%(width,height,left,top))
  17.     self.create_widet()
  18.     self.set_widget()
  19.     self.place_widget()
  20.     self.root.mainloop()
  21.   def create_widet(self):
  22.     self.l1=ttk.Label(self.root)
  23.     self.e1=ttk.Entry(self.root)
  24.     self.b1=ttk.Button(self.root)
  25.     self.lf=ttk.LabelFrame(self.root)
  26.     self.l2=ttk.Label(self.lf)
  27.     self.e2=ttk.Entry(self.lf)
  28.     self.l3=ttk.Label(self.lf)
  29.     self.e3=ttk.Entry(self.lf)
  30.     self.l4=ttk.Label(self.lf)
  31.     self.e4=ttk.Entry(self.lf)
  32.     self.l5=ttk.Label(self.lf)
  33.     self.e5=ttk.Entry(self.lf)
  34.     self.l6=ttk.Label(self.lf)
  35.     self.e6=ttk.Entry(self.lf)
  36.     self.l7=ttk.Label(self.lf)
  37.     self.e7=ttk.Entry(self.lf)
  38.     self.b1.config(command=lambda:self.thread_it(self.search_infos))
  39.   def set_widget(self):
  40.     self.e2_var=StringVar()
  41.     self.e3_var=StringVar()
  42.     self.e4_var=StringVar()
  43.     self.e5_var=StringVar()
  44.     self.e6_var=StringVar()
  45.     self.e7_var=StringVar()
  46.     self.l1.config(text='请输入手机号:')
  47.     self.b1.config(text='查询')
  48.     self.lf.config(text='查询结果')
  49.     self.l2.config(text='手机号码:')
  50.     self.l3.config(text='所属省份:')
  51.     self.l4.config(text='所属城市:')
  52.     self.l5.config(text='区   号:')
  53.     self.l6.config(text='邮   编:')
  54.     self.l7.config(text='类   型:')
  55.     #将字符串变量绑定Entry组件
  56.     self.e2.config(textvariable=self.e2_var)
  57.     self.e3.config(textvariable=self.e3_var)
  58.     self.e4.config(textvariable=self.e4_var)
  59.     self.e5.config(textvariable=self.e5_var)
  60.     self.e6.config(textvariable=self.e6_var)
  61.     self.e7.config(textvariable=self.e7_var)
  62.     self.root.bind('<Escape>',self.escape)
  63.     self.root.bind('<Return>',self.do_search)
  64.   def place_widget(self):
  65.     self.l1.place(x=30,y=20)
  66.     self.e1.place(x=130,y=20)
  67.     self.b1.place(x=290,y=20)
  68.     self.lf.place(x=30,y=60,width=350,height=300)
  69.     self.l2.place(x=60,y=10)
  70.     self.e2.place(x=150,y=10)
  71.     self.l3.place(x=60,y=50)
  72.     self.e3.place(x=150,y=50)
  73.     self.l4.place(x=60,y=90)
  74.     self.e4.place(x=150,y=90)
  75.     self.l5.place(x=60,y=130)
  76.     self.e5.place(x=150,y=130)
  77.     self.l6.place(x=60,y=170)
  78.     self.e6.place(x=150,y=170)
  79.     self.l7.place(x=60,y=210)
  80.     self.e7.place(x=150,y=210)
  81.   def search_infos(self):
  82.     pn=self.e1.get()
  83.     #判断输入类型,必须为11位数字
  84.     if re.match('\d{11}',pn):
  85.       result=Get_Infos().get_infos(pn)
  86.       self.e2_var.set(pn)
  87.       self.e3_var.set(result['province'])
  88.       self.e4_var.set(result['city'])
  89.       self.e5_var.set(result['areacode'])
  90.       self.e6_var.set(result['zip'])
  91.       self.e7_var.set(result['company'])
  92.     else:
  93.       messagebox.showwarning('警告','输入有误,请检查!')
  94.   #使用线程防止UI界面卡死
  95.   def thread_it(self,func,*args):
  96.     t=threading.Thread(target=func,args=args)
  97.     t.setDaemon(True)
  98.     t.start()
  99.   def escape(self,event):
  100.     self.root.destroy()
  101.   def do_search(self,event):
  102.     self.thread_it(self.search_infos())
  103. if __name__ == '__main__':
  104.   a=App()
复制代码
2.Get_Attr
  1. import json
  2. import requests
  3. from urllib.parse import urlencode
  4. class Get_Infos():
  5.   def __init__(self):
  6.     self.url='http://apis.juhe.cn/mobile/get?'
  7.     self.headers={
  8.       'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
  9.     }
  10.   def get_infos(self,phone_num):
  11.     params={
  12.       'phone':phone_num,
  13.       'key':'7a2b367a62fa24108b1f27ed4c84c97a',
  14.       'dtype':''
  15.     }
  16.     r=requests.get(self.url+urlencode(params),headers=self.headers)
  17.     _json=json.loads(r.text)
  18.     if _json.get('resultcode')=='200':
  19.       result=_json.get('result')
  20.       item={}
  21.       item['province']=result.get('province')
  22.       item['city']=result.get('city')
  23.       item['areacode']=result.get('areacode')
  24.       item['zip']=result.get('zip')
  25.       item['company']=result.get('company')
  26.       return item
  27.     else:
  28.       return False
复制代码
三.总结


本次利用Tkinter制作了一款手机归属地查询小工具,简朴调用了一个接口,根本上没有什么难度,就是为了水一篇博客[狗头],步调打包好了放在了这里思路、代码方面有什么不足接待各位大佬指正、批评!
以上就是python 制作手机归属地查询工具(附源码)的详细内容,更多关于python 手机归属地查询的资料请关注草根技术分享别的相关文章!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作