使用Python创建GUI来提取VIN号码信息
车辆识别号码 (VIN) 是一个独特的17位代码,分配给1981年后制造的每辆汽车。它包含有关车辆制造商、型号、制造年份、原产国和其他相关详细信息的信息。在本教程中,我们将学习如何使用Python编程语言创建图形用户界面 (GUI) 来从VIN号码中提取车辆信息。
先决条件
在深入研究创建GUI的细节之前,您应该对Python编程、面向对象编程 (OOP) 概念以及如何使用Tkinter模块有基本的了解。
推荐设置列表
pip install tkinter, pandas, requests
预计用户可以访问任何独立的IDE,例如VS-Code、PyCharm、Atom或Sublime text。
也可以使用在线Python编译器,例如Kaggle.com、Google Cloud Platform或任何其他编译器。
更新版本的Python。在撰写本文时,我使用了3.10.9版本。
了解如何使用Jupyter Notebook。
虚拟环境的知识和应用将是有益的,但也不是必需的;在某些情况下使用API也将是有用的。
完成任务所需的步骤
步骤1:导入必要的模块
from tkinter import* import requests
接下来,我们需要在您的Python脚本中导入必要的库。在本例中,我们需要requests库来发出API请求,以及tkinter库来创建GUI界面。这是导入语句:
步骤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 Decoder") vin_label = Label(root, text="Enter VIN: ") vin_label.pack() vin_entry = Entry(root) vin_entry.pack() submit_button = Button(root, text="Decode", 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"Vehicle Information\n{'='*20}\n" for d in data: doc_text += f"{d['Variable']} : {d['Value']}\n" info_text.insert(END, doc_text) else: info_text.insert(END, "No data found for the VIN provided.\n")
此代码生成以下格式的技术文档:
Vehicle Information ==================== <Variable 1> : <Value 1> <Variable 2> : <Value 2> ... <Variable n> : <Value 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"Vehicle Information\n{'='*20}\n" for d in data: doc_text += f"{d['Variable']} : {d['Value']}\n" info_text.insert(END, doc_text) else: info_text.insert(END, "No data found for the VIN provided.\n") root = Tk() root.title("VIN Decoder") vin_label = Label(root, text="Enter VIN: ") vin_label.pack() vin_entry = Entry(root) vin_entry.pack() submit_button = Button(root, text="Decode", 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创建GUI来从VIN号码中提取车辆信息对于任何对汽车行业或车辆历史感兴趣的人来说都是一项有用的技能。通过遵循本教程中概述的步骤,您可以轻松地将此功能集成到您自己的Python程序和应用程序中。无论您是汽车爱好者、机械师还是车辆历史学家,此工具都可以帮助您深入了解您感兴趣的车辆。
注意:此示例使用来自NHTSA的VIN解码器API,对于未注册的用户,每天最多有25个请求限制。如果您需要发出更多请求,可以注册API密钥并在URL中使用它。