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

时间:2021-09-21 03:35:07

Hello,大家好,我来敷衍你们了 [捂脸],今天还是用Tkinter做一个GUI小工具,用于手机归属地查询。我将代码放在了博文中,程序打包好放在蓝奏云。

一.预览

1.启动

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

2.执行查询

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

二.源代码

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.  
  8. class App:
  9. def __init__(self):
  10. self.root=Tk()
  11. self.root.title('手机号码归属地查询-v1.0')
  12. self.root.resizable(0,0)
  13. width=410
  14. height=390
  15. left=(self.root.winfo_screenwidth()-width)/2
  16. top=(self.root.winfo_screenheight()-height)/2
  17. self.root.geometry('%dx%d+%d+%d'%(width,height,left,top))
  18. self.create_widet()
  19. self.set_widget()
  20. self.place_widget()
  21. self.root.mainloop()
  22.  
  23. def create_widet(self):
  24. self.l1=ttk.Label(self.root)
  25. self.e1=ttk.Entry(self.root)
  26. self.b1=ttk.Button(self.root)
  27. self.lf=ttk.LabelFrame(self.root)
  28. self.l2=ttk.Label(self.lf)
  29. self.e2=ttk.Entry(self.lf)
  30. self.l3=ttk.Label(self.lf)
  31. self.e3=ttk.Entry(self.lf)
  32. self.l4=ttk.Label(self.lf)
  33. self.e4=ttk.Entry(self.lf)
  34. self.l5=ttk.Label(self.lf)
  35. self.e5=ttk.Entry(self.lf)
  36. self.l6=ttk.Label(self.lf)
  37. self.e6=ttk.Entry(self.lf)
  38. self.l7=ttk.Label(self.lf)
  39. self.e7=ttk.Entry(self.lf)
  40. self.b1.config(command=lambda:self.thread_it(self.search_infos))
  41.  
  42. def set_widget(self):
  43. self.e2_var=StringVar()
  44. self.e3_var=StringVar()
  45. self.e4_var=StringVar()
  46. self.e5_var=StringVar()
  47. self.e6_var=StringVar()
  48. self.e7_var=StringVar()
  49. self.l1.config(text='请输入手机号:')
  50. self.b1.config(text='查询')
  51. self.lf.config(text='查询结果')
  52. self.l2.config(text='手机号码:')
  53. self.l3.config(text='所属省份:')
  54. self.l4.config(text='所属城市:')
  55. self.l5.config(text='区 号:')
  56. self.l6.config(text='邮 编:')
  57. self.l7.config(text='类 型:')
  58. #将字符串变量绑定Entry组件
  59. self.e2.config(textvariable=self.e2_var)
  60. self.e3.config(textvariable=self.e3_var)
  61. self.e4.config(textvariable=self.e4_var)
  62. self.e5.config(textvariable=self.e5_var)
  63. self.e6.config(textvariable=self.e6_var)
  64. self.e7.config(textvariable=self.e7_var)
  65. self.root.bind('<Escape>',self.escape)
  66. self.root.bind('<Return>',self.do_search)
  67.  
  68. def place_widget(self):
  69. self.l1.place(x=30,y=20)
  70. self.e1.place(x=130,y=20)
  71. self.b1.place(x=290,y=20)
  72. self.lf.place(x=30,y=60,width=350,height=300)
  73. self.l2.place(x=60,y=10)
  74. self.e2.place(x=150,y=10)
  75. self.l3.place(x=60,y=50)
  76. self.e3.place(x=150,y=50)
  77. self.l4.place(x=60,y=90)
  78. self.e4.place(x=150,y=90)
  79. self.l5.place(x=60,y=130)
  80. self.e5.place(x=150,y=130)
  81. self.l6.place(x=60,y=170)
  82. self.e6.place(x=150,y=170)
  83. self.l7.place(x=60,y=210)
  84. self.e7.place(x=150,y=210)
  85.  
  86. def search_infos(self):
  87. pn=self.e1.get()
  88. #判断输入类型,必须为11位数字
  89. if re.match('\d{11}',pn):
  90. result=Get_Infos().get_infos(pn)
  91. self.e2_var.set(pn)
  92. self.e3_var.set(result['province'])
  93. self.e4_var.set(result['city'])
  94. self.e5_var.set(result['areacode'])
  95. self.e6_var.set(result['zip'])
  96. self.e7_var.set(result['company'])
  97. else:
  98. messagebox.showwarning('警告','输入有误,请检查!')
  99.  
  100. #使用线程防止UI界面卡死
  101. def thread_it(self,func,*args):
  102. t=threading.Thread(target=func,args=args)
  103. t.setDaemon(True)
  104. t.start()
  105.  
  106. def escape(self,event):
  107. self.root.destroy()
  108.  
  109. def do_search(self,event):
  110. self.thread_it(self.search_infos())
  111.  
  112. if __name__ == '__main__':
  113. a=App()

2.Get_Attr

  1. import json
  2. import requests
  3. from urllib.parse import urlencode
  4.  
  5. class Get_Infos():
  6. def __init__(self):
  7. self.url='http://apis.juhe.cn/mobile/get?'
  8. self.headers={
  9. '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'
  10. }
  11. def get_infos(self,phone_num):
  12. params={
  13. 'phone':phone_num,
  14. 'key':'7a2b367a62fa24108b1f27ed4c84c97a',
  15. 'dtype':''
  16. }
  17. r=requests.get(self.url+urlencode(params),headers=self.headers)
  18. _json=json.loads(r.text)
  19. if _json.get('resultcode')=='200':
  20. result=_json.get('result')
  21. item={}
  22. item['province']=result.get('province')
  23. item['city']=result.get('city')
  24. item['areacode']=result.get('areacode')
  25. item['zip']=result.get('zip')
  26. item['company']=result.get('company')
  27. return item
  28. else:
  29. return False

三.总结

本次使用Tkinter制作了一款手机归属地查询小工具,简单调用了一个接口,基本上没有什么难度,就是为了水一篇博客[狗头],程序打包好了放在了这里思路、代码方面有什么不足欢迎各位大佬指正、批评!

以上就是python 制作手机归属地查询工具(附源码)的详细内容,更多关于python 手机归属地查询的资料请关注服务器之家其它相关文章!

原文链接:https://blog.csdn.net/a1397852386/article/details/114417218