Поиск по сайту:

Создайте графический интерфейс для извлечения информации из номера VIN с помощью Python.


Идентификационный номер транспортного средства (VIN) – это уникальный 17-значный код, присваиваемый каждому транспортному средству, выпущенному после 1981 года. Он содержит информацию о марке, модели, году выпуска, стране происхождения и другие важные сведения. В этом руководстве по эксплуатации мы узнаем, как создать графический интерфейс пользователя (GUI) с использованием языка программирования Python для извлечения информации об автомобиле из номера VIN.

Предварительные условия

Прежде чем мы углубимся в детали создания графического пользовательского интерфейса, вы должны иметь базовое представление о программировании на Python, концепциях объектно-ориентированного программирования (ООП) и о том, как работать с модулем Tkinter.

Список рекомендуемых настроек

  • pip install tkinter, pandas, запросы

  • Ожидается, что пользователь будет иметь доступ к любой автономной IDE, такой как VS-Code, PyCharm, Atom или Sublime text.

  • Можно использовать даже онлайн-компиляторы Python, такие как Kaggle.com, платформа Google Cloud или любая другая.

  • Обновленная версия Python. На момент написания статьи я использовал версию 3.10.9.

  • Знание использования блокнота Jupyter.

  • Знание и применение виртуальной среды будут полезны, но не обязательны, также будет полезно использование API в некотором контексте.

Действия, необходимые для выполнения задачи

Шаг 1: Импортируйте необходимые модули

from tkinter import*
import requests

Далее нам нужно импортировать необходимые библиотеки в ваш скрипт Python. В данном случае нам понадобится библиотека Requests для выполнения запросов к API и библиотека tkinter для создания GUI-интерфейса. Вот оператор импорта —

Шаг 2. Создайте функцию для получения данных VIN.

Теперь вам нужно создать функцию, которая извлекает информацию об автомобиле по номеру VIN с помощью API. В этом примере мы используем API декодера VIN от NHTSA (Национальной администрации безопасности дорожного движения) для получения информации о транспортном средстве. Вот функция:

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. Создайте графический интерфейс для ввода VIN и отображения информации об автомобиле –

Далее вам необходимо создать графический интерфейс, который позволяет пользователю вводить номер VIN и отображать информацию об автомобиле в качестве вывода. В этом примере мы используем библиотеку tkinter для создания элементов графического интерфейса. Вот код —

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 в поле ввода.

  • Пользователь нажимает кнопку «Отправить»

  • Графический интерфейс отображает информацию об автомобиле, полученную из API (например, Honda Accord 2003 года выпуска).

Выход

На экране запросится ввод VIN от пользователя.

Теперь мы можем видеть желаемый вывод VIN, что доказывает, что наше приложение работает.

Пример 2. Обработка ошибок при неверном номере VIN

  • Пользователь вводит неверный номер VIN в поле ввода (например, 1234567890).

  • Пользователь вводит действительный ключ API в поле ввода.

  • Пользователь нажимает кнопку «Отправить»

  • Графический интерфейс отображает сообщение об ошибке, указывающее, что номер VIN недействителен, и идентифицирует ошибку.

Во втором сценарии мы проверяем его на наличие ошибок, поскольку это этап контроля качества, который позволит нам проверить достоверность наших результатов.

Пример 3. Обработка ошибок при неправильном ключе API

  • Пользователь вводит действительный номер VIN в поле ввода (например, JM1BK123451234567).

  • Пользователь вводит неправильный или недействительный ключ API в поле ввода.

  • Пользователь нажимает кнопку «Отправить»

  • Графический интерфейс отображает сообщение об ошибке, указывающее, что с некоторыми цифрами VIN что-то не так, но он изо всех сил старается найти ближайший возможный результат и, таким образом, доказывает, что его также можно использовать для проверки пропущенных значений и прогнозного анализа.

Заключение

Чтобы использовать этот скрипт, сохраните его как файл Python с расширением .py и запустите с помощью интерпретатора Python. Когда откроется окно графического интерфейса, введите номер VIN в текстовое поле и нажмите кнопку «Декодировать», чтобы получить и отобразить информацию об автомобиле в виде технического документа.

Создание графического пользовательского интерфейса для извлечения информации об автомобиле из номера VIN с помощью Python — полезный навык для всех, кто интересуется автомобильной промышленностью или историей транспортных средств. Следуя шагам, описанным в этом руководстве, вы можете легко интегрировать эту функцию в свои собственные программы и приложения Python. Независимо от того, являетесь ли вы автолюбителем, механиком или историком транспортных средств, этот инструмент поможет вам получить ценную информацию об интересующих вас транспортных средствах.

Примечание. В этом примере используется API декодера VIN от NHTSA, который имеет ограничение в 25 запросов в день для незарегистрированных пользователей. Если вам нужно сделать больше запросов, вы можете зарегистрировать ключ API и использовать его в URL-адресе.

Статьи по данной тематике: