Нави Тулаг – От датчика до интерфейса. Практическое руководство по созданию инженерных десктоп приложений на Python и web-технологиях (страница 3)
2.1. Классический путь: Tkinter и PyQt
Когда Python-разработчик слышит «нужен интерфейс», первая мысль — Tkinter. Он встроен в Python, не требует установки и работает «из коробки».
Пример на Tkinter:
Плюсы традиционных GUI:
✅ Нативность: Приложение выглядит как часть ОС (особенно PyQt).
✅ Лёгкость: Tkinter не тянет за собой браузер и весит килобайты.
✅ Отсутствие сервера: Не нужно поднимать локальный веб-сервер, всё работает в одном процессе.
Минусы для инженера:
❌ Визуализация: Построить красивый интерактивный график в Tkinter сложно (нужен matplotlib, который тяжёлый и не всегда интерактивный).
❌ Вёрстка: Выравнивание элементов («сетка») в Tkinter часто превращается в боль. Сделать адаптивный интерфейс под разные экраны трудно.
❌ Порог входа PyQt: PyQt мощнее, но у него сложный синтаксис (сигналы/слоты), и он требует изучения Qt-фреймворка.
🛠️ Инженерный вердикт: Tkinter подойдёт для простой «кнопки вкл/выкл». Но если нужно отображать графики в реальном времени, логи и дашборды — вы потратите больше времени на борьбу с интерфейсом, чем на логику работы с железом.
2.2. Современный путь: Веб-обёртки (Hybrid Apps)
Идея проста: логика на Python, интерфейс в браузере.
Вы пишете backend на Python (работа с COM-портами, расчёты), а frontend — на HTML/CSS/JS (кнопки, графики Chart.js). Специальная оболочка (Eel, Electron) связывает их.
Пример архитектуры Eel:
Плюсы веб-обёрток:
✅ Визуализация: Библиотеки вроде Chart.js или Plotly позволяют строить потрясающие графики несколькими строками кода.
✅ Вёрстка: CSS даёт полный контроль над дизайном. Легко сделать тёмную тему, адаптивность под планшеты.
✅ Разделение ответственности: Инженер пишет Python, дизайнер (или готовый шаблон) отвечает за красоту.
Минусы:
❌ Вес: Даже простое приложение тянет за собой движок браузера (хотя Eel использует системный браузер, что легче).
❌ Сложность: Нужно знать основы HTML/JS (но для инженера это уровень «скопировать и поменять цифры»).
💡 Важно: В этой книге мы используем Eel, потому что он максимально лёгкий для Python-разработчика. Electron мощнее, но требует знания Node.js, что избыточно для задач лаборатории.
2.3. Сравнительная таблица: Что выбрать инженеру?
Давайте посмотрим на цифры и факты. Представим, что мы создаём панель мониторинга температуры с графиком.
Вывод: Если ваша цель — быстро сделать удобный инструмент для себя и коллег, веб-обёртки выигрывают за счёт готовых библиотек визуализации.
2.4. Почему мы выбираем Eel для этой книги?
В первой книге мы рассматривали Electron, NW.js и Eel на равных. Но для инженерных задач есть нюансы:
Python — язык инженера. Большинство скриптов для Arduino, обработки данных и расчётов уже написаны на Python. Eel позволяет использовать их без переписывания.
Electron избыточен. Он требует Node.js и собирает свой браузер. Для панели управления двигателем это как стрелять из пушки по воробьям.
Eel — это мост. Он не требует глубокого погружения в веб-разработку. Вы вызываете функции Python из JS так же легко, как из другого модуля Python.
🎯 Наша философия: Не становиться веб-разработчиком. Использовать веб-технологии как инструмент для отображения данных, оставляя Python для работы с железом.
2.5. Когда всё-таки стоит выбрать Tkinter?
Честность — важнее моды. Есть случаи, когда веб-обёртки не подходят:
Сверхлёгкие утилиты. Если нужно просто окно с одним полем ввода, которое должно весить 5 МБ.
Работа на старых ПК. В цехах иногда стоят компьютеры с 2 ГБ памяти. Запуск браузера может быть проблематичен.
Полная изоляция. Если политика безопасности запрещает запуск любых браузерных движков (редко, но бывает).
Но для 90% задач современной лаборатории — гибридный подход (Python + Web) является золотым стандартом.
Что мы узнали?
✅ Традиционные GUI (Tkinter) легки, но сложны в вёрстке и визуализации.
✅ Веб-обёртки дают современный интерфейс и мощные графики «из коробки».
✅ Eel идеально подходит инженерам: логика на Python, интерфейс на HTML.
✅ Выбор инструмента зависит от задачи: для дашбордов — веб, для микро-утилит — Tkinter.
✅ В этой книге мы фокусируемся на Eel как на наиболее сбалансированном инструменте.
📋 Практическое задание
Найдите в интернете скриншоты интерфейсов на Tkinter и на веб-технологиях (например, дашборды Grafana или любые веб-приложения).
Сравните их визуально:
2.a. Где легче читать данные?
2.b. Где графики выглядят современнее?
Подумайте о вашем текущем проекте (из Главы 1):
→ Если бы вы делали его на Tkinter, сколько времени ушло бы на построение графика?
→ Если на Eel — сколько времени уйдёт на подключение Chart.js?
Напишите короткий вывод (2–3 предложения): почему для вашей задачи подходит гибридный подход?
💡 Пример: «Для мониторинга вибрации мне нужно 4 графика в реальном времени. На Tkinter я бы потратил неделю на настройку matplotlib. На Eel я возьму готовый шаблон Chart.js за 1 час. Выбираю Eel».
В следующей главе мы познакомимся с инструментами поближе: Python Eel, Electron и Neutralino. Мы разберём их философию и поймём, почему Eel станет нашим основным рабочим инструментом.
Глава 3: Знакомство с инструментами: Python Eel, Electron, Neutralino. Их философия и применение в инженерии
О чём эта глава?
Вы уже понимаете, зачем инженеру своё приложение и почему веб-технологии в оболочке — правильный выбор.
Теперь пришло время познакомиться с тремя главными инструментами этой книги:
Python Eel — минималистичный мост для Python-разработчиков.
Electron — промышленный стандарт для сложных продуктов.
Neutralino — лёгкая современная альтернатива без Node.js.
В этой главе вы узнаете:
✅ Какую проблему каждый из них решает в инженерном контексте.