Python 创建GUI来从VIN号码中提取信息

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

Python 创建GUI来从VIN号码中提取信息

Python 创建GUI来从VIN号码中提取信息

现在我们可以看到所需的VIN输出,因此证明我们的应用程序有效。

例子2:无效VIN号码的错误处理

  • 用户在输入框中输入无效的VIN号码(例如:1234567890)

  • 用户输入有效的API密钥

  • 用户单击“提交”按钮

  • GUI显示错误消息,指示VIN号码无效并标识错误。

在第二种情况下,我们正在进行错误检查,因为这是一项质量控制步骤,可以检查输出的有效性。

Python 创建GUI来从VIN号码中提取信息

例子3:错误API密钥的错误处理

  • 用户将有效的VIN号码(例如:JM1BK123451234567)输入输入框

  • 用户输入不正确或无效的API密钥

  • 用户单击“提交”按钮

  • GUI显示错误消息,表示VIN的某些数字有问题,但尽最大努力提供最接近的可能结果,从而证明这也可用于检查缺失值和预测分析。

Python 创建GUI来从VIN号码中提取信息

结论

要使用此脚本,请将其另存为具有.py扩展名的Python文件,并使用Python解释器运行它。一旦GUI窗口打开,就在文本框中输入VIN号码,然后单击“解码”按钮,以技术文件形式获取和显示车辆信息。

使用Python创建从VIN号码提取车辆信息的GUI是对汽车行业或车辆历史感兴趣的任何人的有用技能。通过按照本说明手册中的步骤,您可以轻松将此功能集成到自己的Python程序和应用程序中。无论您是汽车爱好者、机械师还是车辆历史学家,这个工具都可以帮助您获得有价值的洞察力,了解您感兴趣的车辆。
注意:此示例使用NHTSA的VIN解码器API,未注册用户每日请求次数限制为25次。如果需要更多请求,您可以注册API密钥并在URL中使用它。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Python 教程