Обновить

Комментарии 26

Почему мы боимся GUI на Python?

Потому, что проще и выгоднее делать интерфейс пользователя на сверхлегком C++ / WTL, а данные к нему на Питоне.

Лично мне больше нравится вариант Front+Backend
Любой интерфейс на JS накрутил, какой хочешь красоты. А бэк на Fast API
Нужен только браузер

устаревший Tkinter, требующие изучения сложного API, долгой настройки и написания сотен строк кода для простейшего окна

В tkinter есть модуль ttk с более няшными виджетами, если прям очень надо. Есть простой упаковщик pack, если с grid'ом возиться не хочется. Tkinter - хорошее решение для внутренних нужд организации. Распространяемые приложения на нем вряд ли когда особо писались. Так что с чего вдруг он устаревший?

А в чем проблема распространения?

Распространял софт на питоне + tkinter ещё со временем python 2.5. Исталяшка весила от 3-4 мегабайт.

Сейчас готовлю к релизу софтину - 50 мегабайт, но там жирные библиотеки в комплекте.

Проблема скорее не в распространении, а в некоторой нестандартности виджетов tkinter.

Если говорить о ttk (который с третьей версии питона вообще идёт в поставке), то вполне себе нативненько все выглядит. Про какие виджеты вы говорите?

Если надо тонко настраивать стили в ttk, это делается не так, как у виджет из основной библиотеки. Придется доучивать. В этом смысле преимущество перед другими библиотеками теряется. Да и набор виджет ttk и tkinter полностью не совпадает. В сложном GUI стилизация может оказаться смешанной. Если предположить, что программа будет монетизироваться, распространяться на как можно более широкую аудиторию, то рекомендовать tkinter мне кажется странным.

Подскажите лучше сервис или ПО, где вставляешь обычный текст, а он делает маркдаун

Тоже начинал делать свой GUI фреймворк с Flutter и desktop-app. Для заказчиков оказалось этого мало, потому что они хотят под Web и многопользователя. Пришлось Flutter поменять на Vue/Quasar (у Flutter c web тормоза/грабли с отображением были серьезные), вкрутить aio/http/websocket и сделать еще много чего. тогда стало практически полезно.

НЛО прилетело и опубликовало эту надпись здесь

как по мне https://nicegui.io/ это мура:

ui.sub_pages({ '/': table_page, '/map/{lat}/{lon}': map_page, }).classes('w-full')

какие роутеры-классы и зачем, если решили GUI автомат делать?!

не, мой подход умнее и практичней https://github.com/unisi-tech/unisi

ничего лишнего, полный автомат на всех уровнях.

НЛО прилетело и опубликовало эту надпись здесь

Классы - это классы CSS из библиотеки Tailwind. Если они не нужны, их тоже можно не указывать.

Если они в Hello word примере, то это врядли. Роутеры зачем? Стили, размеры? Это все должно считаться автоматом или выставляться в сеттинге: "ios Style, Vasya Style, .." Автоматические GUI нужны спецам, которым интересен Web-программинг как мойка посуды или уборка подъездов. Рассказывать спецам по ML или системной инженерии про Tailwind или роутеры или прочую web-шнягу - антигуманно. Им нужно спроецировать их данные в GUI автоматом или, максимум, парой строк.

НЛО прилетело и опубликовало эту надпись здесь

В вашей библиотеке, наверное, тоже стили надо применять, если ширину кнопки надо установить или там отступы, выравнивание по ширине или по левому краю? Как без этого-то.

никаких стилей, размеров, отступов, на все элементы размеры, отступы, выравнивания считаются автоматом встроенным автодизайнером. Однако размеры можно указать там, где вы не согласны с автодизайнером для Image, Video, Block.

НЛО прилетело и опубликовало эту надпись здесь

Quasar не поддерживает стили в моем понимании, только цветовые палитры + тянет код 700кб в сжатом виде, что какбы дофига. + всякие архитектурные недочеты, делающие код автодизайнера не очень приятным (оттого и не выкладываю отдельно, стесняюсь). Оно вроде некритично, но когданибудь закажу нейросети перегенерить все под другой, менее монструозный front framework, когда найду такой.

C# в плане простоты лучше.

когда речь заходит о создании десктопного приложения с графическим интерфейсом, энтузиазм часто угасает

Да потому что самая большая боль не в том, чтобы освоить "монстров", типа PyQt или Tk, у которых я, честно сказать, вижу мало отличий от Flet и при сравнении окажется, что они довольно сильно похожи.

Самой большой болью графических приложений на питоне было и остаётся наличие интерпретатора и сложность упаковки готового приложения с дальнейшем распространением на другие платформы исполняемого файла.

А из статьи я вижу те же яйца, только сбоку, уж простите.

Когда-то давным давно появился Delphi, а также всякие Вижуал Васики и прочие Вижуал * включая Фокспро. Тогда казалось, что вопросы создания GUI решены окончательно и навсегда. Где и когда мы свернули не туда, что прошло 30 лет и мы опять вырезаем гланды автогеном через анус?

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

Пришлось создавать новые способы адаптивной и динамической разметки GUI, а вот поверх нового уже снова делают Визивиг, который тоже через несколько лет окажется за бортом, потому что внезапно окажется, что... [тут место для визионерства].

Вопрос не в том, насколько страшен GUI, а в том, насколько они нужен. Во времена быстрого интернета и облачных вычислений десктопные приложения вымирают, как класс. С другой стороны, ваше предложение сделать Markdown редактор - это хорошо. Но он же уже есть во всех IDE. А, если честно, сколько GUI приложений вы именно устанавливали на свой ПК за последние 5 лет? Ну, кроме браузера и IDE?

Последний раз делал на заказ оконные приложения лет 6 назад. NET Forms - неплохо, конечно, но C# - это на любителя. Для Python зашло PyQT. Великолепный редактор форм, простой бутстрап на Python и поддержка PyInstaller из коробки. Да, бинарник жирный на выходе, и лицензия не простая. Но для тех редких случаев вполне хватало.

К тому же, проблема в том, что Python очень плохо портируется. Где-то за версию ОС цепляется, где-то библиотеки не те, где-то антивирус не пропускает. Поверьте мне, вам это не нужно.

К тому же, проблема в том, что Python очень плохо портируется. Где-то за версию ОС цепляется, где-то библиотеки не те, где-то антивирус не пропускает. Поверьте мне, вам это не нужно.

частично соглашусь

но Flet, как раз такой фреймворк, который более или менее эту проблему решает.

да, у меня были проблемы со сборкой моего приложения под андроид. Ни в какую модуль "requests" не хотел включаться в дистрибутив. Так и не смог побороть. Проще было переписать на использование httpx.

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

Какой же ты ограниченный (в сфере своей работы) -- я вот считаю, что любое приложение нуждается в GUI. Если тебе конкретно не нужен, то это значит только, что ты пишешь что-то специфическое, что недоступно массовым пользователям или какие-то примитивные скрипты (ну, ок, может, и не сильно примитивно, если ты пишешь копирование файлов с hdd на ssd используя команды для прошивок дисков -- но кому это надо?)

Вопрос не в том, что GUI страшен, вопрос только в том, чтонет нормальной IDE для Python-приложений, которая бы была столь же удобной, как Visual Studio для разработки виндовых приложений -- чтобы нормально можно было и интерфейс создавать, и код писать, и все event handler'ы генерились как надо

Ну PyQt приложения пишутся ненамного сложнее, а с использованием CoPilotа все пишется вообще влёт. Даже с со сложной логикой и большим количеством элементов в форме. И работает это везде одинаково.

в общем мне понятна цель этой статьи.

@enamored_poc если уж взялись за написание обучающих материалов по Flet, то почему бы в примерах не использовать последнюю версию фреймворка, в которой UI можно описывать декларативно?

Я про версию 1 альфа. Но если сейчас начинать что-то делать с использованием этого фреймворка, то как по мне, то лучше использовать ее. Да, не все может работать стабильно, переходить с версии 0.28.3 будет та еще головная боль.

В принципе Flet мне понравился. Я написал мобильное приложение, которое опубликовал в RuStore. И тот же самый код используется в веб-версии этого приложения. Да, большой нагрузки на веб-приложение нет, но и ресурсы под веб-версию выделены мизерные.
Для "рабочих нужд" написал небольшое десктопное приложение. Собрал дистрибутивы под MacOS и Windows. Приложение используется в повседневной работе, приложение практически не развивается (нет потребности).

Инструмент вроде как рабочий, но спустя 5 месяцев разработки прихожу к выводу, что целесообразней будет мобильное приложение переписать на Flutter :)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации