Комментарии 21
По поводу Qt как-то слабовато выглядит. Чтобы понять, что умеет современный (и да, биндинги для питона тоже есть) - откройте try.qt.io
А если у вас есть свои фавориты, расскажите о них в комментариях.
Для создания GUI, лучше, мне кажется, использовать C++ / WTL, получаются очень легкие приложения, даже с использованием поддержки видео (см. скриншот моего проекта «МедиаТекст»: http://scholium.webservis.ru/Pics/MediaText.png ). А Питон использовать исключительно для обработки и подготовки данных. В итоге, выходит отличный симбиоз!
WTL, вы серьёзно? Windows only который вообще не развивается уже лет 10? Тут вот есть замечательный changelog который показывает что уже 9 версия была метрворржденной:
Changes: - Changed version from 8.1 to 9.0 - Support for new VersionHelpers.h in SDK (VS2013) - GetVersionEx() is now deprecated - AppWizard setup scripts for VC++ 2013 and VC++ 2013 Express
Это всё :)
WTL, вы серьёзно? Windows only который вообще не развивается уже лет 10? Тут вот есть замечательный changelog который показывает что уже 9 версия была метрворржденной:
Это всё :)
В данном случае, WTL естественно, на любителя. Я сам, сначала влюбился в него, потом разлюбил, потом снова влюбился :) . Вы можете подставить вместо него свой любимый GUI-фреймворк. Разговор то шел, в принципе, о другом, что GUI в Питоне это тоже очень на любителя, как и Qt, хоть с Питоном, хоть без. Зато Питон очень хорош для работы с данными, зачем спрашивается, тогда, «натягивать сову на глобус», то бишь, делать GUI-приложения на Питоне? Но, если нравится – делайте, садо / мазо еще никто не отменял.
Что касается, собственно, WTL.
Мне как-то глубоко параллельно, развивается он или нет, кроссплатформенный или нет. Там той библиотеки менее полутора «метров» в исходниках. Если уж я линуксовский FFPlay.c (видеопроигрыватель) адаптировал в своем С++ проекте, то, думаю, и с WTL'ем можно решить противоположную задачу либо эквивалентную ей.
Мне C++ / WTL нужен для моих пет-проектов (последний можете посмотреть здесь: https://habr.com/ru/articles/848836/ ). Только, критиковать меня насчет несовременного (т.е., не «черного» и не «плоского») интерфейса бесполезно. Поскольку, я решаю собственные задачи, прежде всего, для себя. Другим, если не нравится, можно не пользоваться. Для этих целей, C++ / WTL для интерфейса, а Питон для работы с данными – мне подходят идеально… ;) .
Увы, я с большего продукт / аутсорс разработчик. Пет проект у меня есть, но там до gui ещё далеко. Впрочем, в моём случае это без вариантов будет qml, ибо он хорош в виде we webassembly и мобильных приложений (у Flutter нет нормальных c++ биндингов, как минимум).
Поэтому я заморачиваюсь по таким вещам как юзабилити. В том числе поддержка многомониторных систем с различным dpi. А в плане удобства разработки, wtl так себе. И для него нет практически никаких инструментов. И в кросс-платформу он не умеет.
А в плане удобства разработки, wtl так себе. И для него нет практически никаких инструментов. И в кросс-платформу он не умеет.
Понятно, что каждому интересен только собственный контекст разработки. В этом Мире есть, в принципе, всё, для каждого. Нужно только искать и делать выбор. Поэтому, я бы вообще не заморачивался бы тем кто, как, что делает для себя лично. Принял информацию к сведению и не более. Если появится интерес – интересуемся дальше, нет – забыли, без особых эмоций.
Я же не рекламирую WTL, просто рассказываю, что меня интересует. Вы – что вас интересует. Потрындели и разбежались.
WTL мои проблемы решает и мне этого достаточно. «Кроссплатформа», лично мне, не нужна от слова «совсем». Моя старая версия обучающей программы была написана на «Adobe AIR», которая, вроде, как кроссплатформенная. По крайней мере, Линукс-пользователи предъявляли ко мне претензии только в части того, что документация, в pdf-формате, у них не открывается. Я предложил им ограничиться встроенной справкой, благо, сама программа довольно простая. Но, этот инструмент разработки перестали поддерживать и я был вынужден перейти на С++ (WTL, для меня, просто обертка над WinAPI). Вот и весь мой опыт, за всю программистскую карьеру, работы с «кросс-платформой». Начинать думать о ней сейчас, как бы, не вижу смысла.
Недостатки:
Не нативный вид: Kivy рисует собственные виджеты, что отличает их от системного стиля платформ (например, iOS или Windows).
Однако во Flatter это относится к достоинствам.
Сложность установки: много зависимостей (SDL2, GStreamer и др.), что может затруднить настройку, особенно на Windows.
Сейчас все зависимости устанавливаются из колес при установке самого Kivy.
Размер приложений: даже простые APK для Android могут быть больше 10 Мб из-за зависимостей.
А любое нативное приложение на iPhone весит от 100 метров. Да и на Андроид тоже вряд ли можно найти достойнок приложение размером меньше 10 Мб.
PyQt Designer отличный легковесный инструмент, а главное WYSIWYG! Сразу видишь что получишь. Сейчас пишу гуй на Rust и вспоминаю PyQt Designer как вспоминают утраченную родину)
Еще стоит обратить внимание на NiceGUI
И flet
И Dear PyGui.
Также для Qt на самом деле два биндинга: один их собственный (PySide) и один сторонний (PyQt). В комментариях оба упоминаются, я только хотел дополнить, что это два разных.
Поделюсь впечатлениями совсем простого человека. Простой человек статьёй разочарован. То, что его интересует, в лучшем случае упоминается мимоходом. А простого человека интересует всего три вопроса: как это собрать без заморочек, есть ли у интерфейса свой поток и быстро/сложно ли отрисовывается произвольная графика, типа 3D. А как там виджеты добавляются - дело десятое, они уже лет тридцать как везде добавляются без проблем.
И ещё, вызывает недоумение отсутствие вариантов где UI в браузере. Простой человек Хабр читал, помнит - успешно делался GUI для Python путём прикручивания Python к Tauri. Ну или там ещё anvil.works всякие есть.
По прочтению должен был быть прилив энтузиазма - хорошо у Python с GUI, разнообразно. А наблюдается отлив - погано у Python с GUI (если есть много решений, значит нет ни одного хорошего - универсалиная формула от которой ни за какими "для каждой задачи" не спрячешься), а чтобы что-то выбрать, нужно самому разбираться с каждым вариантом, причём, по опыту, не меньше чем процентов на 70 от целиком, если сразу не отпадёт.
В статье есть Remi, который как раз в браузере. Или не совсем то?
Remi я пропустил - проект показался мне мёртвым. Сейчас посмотрел ещё раз - либо мёртвый, либо, если действительно развивается а я не вижу где, то бестолковый в худшем опенсорсном стиле - ни релиза ни документации. Remi похож на Anvil.works во младенчестве.
Совсем ли это то? Нет. Я имел в виду другое, на втором проходе могу сформулировать так: если Django это GUI инструмент, то статья сильно неполная, а если нет, то избавьте Remi от сравнения с Flask.
На Python с GUI, действительно погано (по сравнению с другими ЯП). Из всего этого разнообразия "production ready" только PySide6. И Nuitka для сборки. Что то мелкое вполне можно писать на виджетах, и собирать без боли. Что-то красивое из коробки - на QML. Следующим за QT по перспективе - Kivy. Но пока не будет адекватного тулинга - оно не поедет. Остальному стоит уделять внимание - исключительно в развлекательных целях. ИМХО конечно.
В статье нет самого сейчас важного параметра - насколько качественно получаются на этих библиотеках интерфейсы, сгенерированные ИИ. Кривая обучения теряет актуальность если можно описать интерфейс и загрузить в дипсек.
Дикпик умеет в это, и иной раз неплохо. Но располагает элементы управления очень уж коряво, нужно делать много попыток и менять промпт. У меня получалось с ним создать приложение, по сложности гуя сравнимое с диспетчером задач винды (вкладка производительность), что сложнее он пока не умеет. Проще накидать элементов в qt designer, а вот код обработчиков пущай ИИ пишет, все таки визуал намного проще делать. И такое бывает еще, что ты представляешь себе гуй, а обьяснить не можешь толком даже человеку, не то что ИИ.
Tkinter — простой и встроенный.
Да, простой, но не встроенных. Например, на Astra Linux нужно ставить из репозитория пакет python3-tk
Спасибо за пример на kivy! Запустил его под linux и сразу был обескуражен:
1) красные кружки в любом месте окна при клике правой кнопкой мыши. В исходниках ничего нет.
2) в текстовом поле не работает copy-paste
3) при изменении размеров окна путём перетягивания верхней границы отрисовка ведёт себя совсем неадекватно и после кнопки перестают реагировать.
4) дальше играться не стал...
Честно, я бы поостерёгся такое не то, что рекламировать, а даже упоминать.
Столкнулся с вылетом Коннекта андроид авто от телефона к авто.
Суть свелась к тому, что часть нативных уведомлений проходят ок.
А часть, пушей и прочее чтоостороено не нативном - крашат приложение и Коннект.
Отсюда вывод - есть ось и ее ют с апи, им и пользуйся.
Хочешь экстравагантного, то будь готов через х итераций вернутся к нату.
А что касается обзора, то в рамках макось юи - все одинаково.
Попробуйте то же в Линукс или в Винде и там столько косточек будет...
Графика и Python: 6 GUI-инструментов, которые пригодятся разработчикам в 2025 году