Python 创建GUI来从VIN号码中提取信息
车辆识别号码(VIN)是分配给每个1981年之后生产的车辆的唯一17位代码。它包含有关车辆制造商、型号、制造年份、原产国和其他相关细节的信息。在本指南中,我们将学习如何使用Python编程语言创建一个图形用户界面(GUI),以从VIN号码中提取车辆信息。
前提条件
在深入了解创建GUI的详细信息之前,您应该具有基本的Python编程知识、面向对象编程(OOP)概念以及如何使用Tkinter模块的技能和技巧。
建议的设置清单
- pip 安装tkinter、pandas和requests
-
预计用户将可以访问任何独立的 IDE,如VS-Code、PyCharm、Atom或Sublime文本。
-
甚至可以使用在线Python编译器,例如Kaggle.com、Google Cloud平台或任何其他支持Python的在线IDE。
-
更新版本的Python。在撰写本文时,我使用了3.10.9版本。
-
对Jupyter笔记本的使用了解。
-
对虚拟环境的使用了解和应用将是有益的,但不是必须的,有些情况下使用API也将是有用的。
实现任务所需的步骤
步骤1:导入必要的模块
接下来,您需要在Python脚本中导入必要的库。在本例中,我们需要使用requests库进行API请求和使用tkinter库创建GUI接口。下面是导入语句-
from tkinter import *
import requests
步骤2:创建一个函数来获取VIN数据
现在,您需要创建一个函数,使用API从VIN号码中提取车辆信息。在本例中,我们使用NHTSA(国家公路交通安全管理局)的VIN解码器API来获取车辆信息。以下是该函数:
def get_vin_data(vin):
url = f'https://vpic.nhtsa.dot.gov/api/vehicles/decodevin/{vin}?format=json'
response = requests.get(url)
if response.status_code == 200:
return response.json()['Results']
else:
return None
该函数以VIN号码作为输入,并将车辆信息作为JSON对象返回。
步骤3:创建一个GUI接口来输入VIN并显示车辆信息
接下来,您需要创建一个GUI接口,允许用户输入VIN号码,并将车辆信息作为输出显示。在本例中,我们使用tkinter库创建GUI元素。以下是代码-
def display_vin_data():
vin = vin_entry.get()
data = get_vin_data(vin)
if data:
for d in data:
info_text.insert(END, f"{d['Variable']} : {d['Value']}\n")
else:
info_text.insert(END, "No data found for the VIN provided.\n")
root = Tk()
root.title("VIN解码器")
vin_label = Label(root, text="输入VIN:")
vin_label.pack()
vin_entry = Entry(root)
vin_entry.pack()
submit_button = Button(root, text="解码", command=display_vin_data)
submit_button.pack()
info_text = Text(root)
info_text.pack()
root.mainloop()
该代码创建了一个窗口,其中包含一个标签、文本框、按钮和另一个文本框。用户可以在文本框中输入VIN号码,然后单击“解码”按钮,以在第二个文本框中显示车辆信息。
步骤4:将结果显示为技术文档:
如果您想将车辆信息显示为技术文档,可以修改display_vin_data函数以生成所需格式的文档。以下是更新后的代码:
def display_vin_data():
vin = vin_entry.get()
data = get_vin_data(vin)
if data:
doc_text = f"车辆信息\n{'='*20}\n"
for d in data:
doc_text += f"{d['变量']} : {d['值']}\n"
info_text.insert(END, doc_text)
else:
info_text.insert(END, "未找到提供的VIN的数据。\n")
这段代码生成以下格式的技术文件
车辆信息
====================
<变量1> : <值1>
<变量2> : <值2>
...
<变量n> : <值n>
最终代码,程序
import requests
from tkinter import *
def get_vin_data(vin):
url = f'https://vpic.nhtsa.dot.gov/api/vehicles/decodevin/{vin}?format=json'
response = requests.get(url)
if response.status_code == 200:
return response.json()['Results']
else:
return None
def display_vin_data():
vin = vin_entry.get()
data = get_vin_data(vin)
if data:
doc_text = f"车辆信息\n{'='*20}\n"
for d in data:
doc_text += f"{d['变量']} : {d['值']}\n"
info_text.insert(END, doc_text)
else:
info_text.insert(END, "未找到提供的VIN的数据。\n")
root = Tk()
root.title("VIN解码器")
vin_label = Label(root, text="输入VIN号: ")
vin_label.pack()
vin_entry = Entry(root)
vin_entry.pack()
submit_button = Button(root, text="解码", command=display_vin_data)
submit_button.pack()
info_text = Text(root)
info_text.pack()
root.mainloop()
输出
现实世界的例子
例子1:从VIN号码检索车辆信息
- 用户将VIN号码输入输入框(例如:1HGCM82633A004352)
-
用户输入有效的API密钥
-
用户单击“提交”按钮
-
GUI从API检索的车辆信息显示(例如:2003本田雅阁)
输出
屏幕要求用户输入VIN
现在我们可以看到所需的VIN输出,因此证明我们的应用程序有效。
例子2:无效VIN号码的错误处理
- 用户在输入框中输入无效的VIN号码(例如:1234567890)
-
用户输入有效的API密钥
-
用户单击“提交”按钮
-
GUI显示错误消息,指示VIN号码无效并标识错误。
在第二种情况下,我们正在进行错误检查,因为这是一项质量控制步骤,可以检查输出的有效性。
例子3:错误API密钥的错误处理
- 用户将有效的VIN号码(例如:JM1BK123451234567)输入输入框
-
用户输入不正确或无效的API密钥
-
用户单击“提交”按钮
-
GUI显示错误消息,表示VIN的某些数字有问题,但尽最大努力提供最接近的可能结果,从而证明这也可用于检查缺失值和预测分析。
结论
要使用此脚本,请将其另存为具有.py扩展名的Python文件,并使用Python解释器运行它。一旦GUI窗口打开,就在文本框中输入VIN号码,然后单击“解码”按钮,以技术文件形式获取和显示车辆信息。
使用Python创建从VIN号码提取车辆信息的GUI是对汽车行业或车辆历史感兴趣的任何人的有用技能。通过按照本说明手册中的步骤,您可以轻松将此功能集成到自己的Python程序和应用程序中。无论您是汽车爱好者、机械师还是车辆历史学家,这个工具都可以帮助您获得有价值的洞察力,了解您感兴趣的车辆。
注意:此示例使用NHTSA的VIN解码器API,未注册用户每日请求次数限制为25次。如果需要更多请求,您可以注册API密钥并在URL中使用它。