前言
GUI(图形用户界面) 想必大家都不陌生,简单来说就是将代码变成可以交互式操作的界面。在 Python 中就提供了多个图形开发界面的库,比如 Tkinter 、 wxPython 、 Jython 等,本文将使用 Tkinter 来制作一个简单的快递查询软件,先来看看效果
为什么使用 Tkinter ? 因为Tkinter 是 Python 的 标准 GUI 库 , 只要安装好 Python 之后就能直接使用, 对于我们这样一个简单的小程序还是能应付自如。
好了,现在我们来分析应该如何制作,其实主要就是下面两个步骤:
-
Python爬取快递查询网站
-
使用 Tkinter 制作界面
所以我将按照上面两项来说明制作过程。
爬取快递网站
在这一步,我们需要做的就是写一个函数,我们 给它一个快递单号就能将该单号的物流信息返回 , 首先说一下走过的坑,在一开始的思路就是找个快递查询的网站,然后抓一下包就能拿到我们需要的内容,结果一操作发现国内查快递的网站基本用的都是快递100的 API ,申请个API还挺麻烦的。不申请API直接爬的物流信息被各种加密。折腾半天终于找到一个手机端的网站可以使用。直接上代码
import requests
import bs4
import re
kuaidi = []
url='http://m.46644.com/express/result.php?typetxt=%D6%D0%CD%A8&type=zto&number=你的单号'
response = requests.get(url)
response.encoding = 'gb18030'
response = response.text
soup = bs4.BeautifulSoup(response,'html.parser',from_encoding="utf8")
for i in soup.findAll(name='div',attrs = {'class':'icontent'}):
kuaidi.append(i.get_text())
print(i.get_text())
这一段代码我们使用多很多次就不过多解读了,用 Requests请求
并使用 bs4提取
我们需要的信息,当然注意到这只是中通快递的查询链接
因此我们只需要再写一个函数来生成更多快递公司的查询链接就可以查询多家快递信息, 这样我们就完成了第一步: 提供一个单号,返回对应的物流信息
制作界面
在上一步,我们已经实现第一个功能:查询物流信息,现在要做的就是 整出一个界面 ,这个界面要有一个 文本输入框 、一个 按钮 和一个显示物流信息的区域,而这对于Tkinter来说也并不困难,比如三行代码即可生成一个页面
import tkinter as tk
root = tk.Tk()
root.mainloop()
当然这个界面中什么都没有,接下来就是对这个界面进行修改,比如先调整 大小和背景
import tkinter as tk
HEIGHT = 500
WIDTH = 600
root = tk.Tk()
canvas = tk.Canvas(root, height=HEIGHT, width=WIDTH)
canvas.pack()
background_image = tk.PhotoImage(file='/Users/liuhuanshuo/Desktop/bg1.png')
background_label = tk.Label(root, image=background_image)
background_label.place(relwidth=1, relheight=1)
root.mainloop()
接着我们用下面的代码添加按钮和输入框
frame = tk.Frame(root, bg='#80c1ff', bd=5)
frame.place(relx=0.5, rely=0.1, relwidth=0.75, relheight=0.1, anchor='n')
entry = tk.Entry(frame, font=40)
entry.place(relwidth=0.65, relheight=1)
button = tk.Button(frame, text="查快递", font=40, command=lambda: kuaidi(entry.get()))
button.place(relx=0.7, relheight=1, relwidth=0.3)
最后再添加 亿 点细节就差不多了!
可以看到,仅用了 不到30行代码 ,我们就成功做出来界面,而这些代码的详细参数设置都可以查阅官方文档,这里就不在赘述,最后只要结合我们上一步的爬取物流信息的代码就大功告成!
结束语
回顾上面整个过程,好像也没有用到特别复杂的工具,如果自己独立敲一遍我想应该会有所收获,并且基于这个例子可以实现 更多的功能 ,比如添加其他按钮来实现更多功能,或者 将查快递改为查天气、查单词等 ,这些就留给你们了,拜拜~
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Apache Kylin 在中通快递的实践
- 客服、程序员、快递小哥,双十一狂欢的幕后守护者
- 国家邮政局:80/90后成快递员主体,万元薪酬并不普遍
- 【安全帮】菜鸟驿站1000万条数据被非法窃取:均为大学生快递信息
- 快递员也会黑了你的公司?DarkVishnya银行攻击事件浅谈
- 编程范式 —— 函数式编程入门
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Beginning Google Maps API 3
Gabriel Svennerberg / Apress / 2010-07-27 / $39.99
This book is about the next generation of the Google Maps API. It will provide the reader with the skills and knowledge necessary to incorporate Google Maps v3 on web pages in both desktop and mobile ......一起来看看 《Beginning Google Maps API 3》 这本书的介绍吧!