使用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中使用它。

更新於:2023年4月25日

瀏覽量:571

啟動您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.