Что выбрать для написания GUI в 2021.
Что лучше выбрать для написания десктопного GUI приложения в 2021 году.
Нужно написать кросплатфоменный интерфейс.
Там должны быть дерево, таблицы (большие, сортировки, группировки, …), формы. Хочется не писать их самостоятельно.
- C# (WinForms или Avalonia, Gtk), поскольку на c# писал мало, и есть ощущения, что скорость разработки не очень высокая. Сходу полноценных таблиц и деревьев вообще не нашел.
- Python (PySide6), посмотрел по gui на python. Варианты по сути:
- PyQt(PySide) 6 версия уже достаточно стабильна ? Документации навскидку не очень много нашел.
- wxWidgets есть ощущение, что менее мощный. (тут смущает, что будет медленнее C# и опять же GIL).
В C++ лезть не хочется, так как давно на нем не писал, и есть ощущение, что на нем разработка будет еще медленнее чем на C#.
Предварительно кажется, что python будет компромисным вариантом.
Разработчик пока всего один, и не хочется надолго увязать в написании GUI, так как есть и другие задачи.
У кого какие соображения по данному вопросу ?
ol1mp ★
13.07.21 20:14:13 MSK
← 1 2 3 →Сам спросил — сам ответил. Уносите.
anonymous
( 13.07.21 20:18:29 MSK )wxWidgets написаны на c++, сами виджеты не тормозят. GIL при правильной многопоточности (у wxPython свои расширения для этого) ты вообще не заметишь.
Посмотри ещё таблицы на TkInter — там есть ОЧЕНЬ навороченные решения, и всё буквально летает (для web ui до таких таблиц как до луны раком), в wx таблицы в комплекте хорошие, но для Tk сторонние решения.
Я для просмотра гигантских pandas таблиц вот это использую:
https://pandastable.readthedocs.io/en/latest/examples.html — там для таблицы виртуальный буфер, она вообще ракета.Думаю, если для группировки/сортировки возьмёшь pandas/numpy и грамотно запроектируешь ui (с буфером), то на python можно будет сделать очень быстрое приложение.
Для QT и wx есть визуальные форморисовальщики.
Shadow ★★★★★
( 13.07.21 20:19:28 MSK )
Последнее исправление: Shadow 13.07.21 20:25:32 MSK (всего исправлений: 3)rebl0g
Представьте ситуацию: вы пишете-пишете проект, и вдруг этому проекту требуется GUI. И тут вас спрашивают «на чем будем писать?». Хочу поделиться своими мыслями на тему того, о чем стоит задумываться, перед тем как отвечать на такой вопрос.
Я вам конечно «не скажу за всю Одессу», но думаю что могу сказать про GUI всяких системных утилит и security-related софта.
На самом деле все фреймворки для написания GUI — проблемные. Я полностью согласен с фразами о том, что какой фреймворк не выбери, написание кода GUI будет не добавлением, а сращиванием. Обязательно придется переделывать код так, чтобы он вписывался в GUI, а не делать GUI на основе существующего кода. Поэтому надеяться на то, что какой-то фреймворк будет лучше для моего проекта — бесполезно. И заявления о том, что какой-то фреймворк лучше подходит для каких-то задач, скорее миф чем правда.
Для подтверждения своих слов вот результат исследования фреймворков используемых в современных приложениях:
Приложение Фреймворк acronis true image QT skype QT araxis merge свой на основе ATL teamviewer WTL EaseUS Partition Master Home Edition GTK Folder Lock HTMLLayout agnitum outpost HTMLLayout hex workshop MFC vmware свой на основе ATL trillian свой на основе GDI+ drweb MFC + WTL symantec SymHTML kaspersky QT NOD MFC Я выбирал приложения где GUI — это не просто форма, две кнопки, один прогресс и список, и нужно лишь напрячь дизайнера, чтобы он это красиво оформил. Я выбирал приложения, где нужно отображать достаточно много данных, где действительно требовалась большая работа по юзабилити, где есть сложные взаимодействия элементов. Ну и где проект уже существует много лет.
Как вы видите, на любом фреймворке можно написать сложный GUI, и на любом фреймворке можно продолжать его расширять. И как видите, некоторые компании не пугает факт того, что свой делать фреймворк — это долго и сложно. Пишут.
На что же влияет выбор фреймворка?
1) Конечно же фреймворк влияет на внешний вид.MFC, ATL, WTL и их потомки
Комментировать особо нечего. Если сильно постараться, то можно получить конфету похожую на интерфейс windows 7 (Nod), но в целом получается «классика».
QT
Белое, но не пушистое, модное направление.
HtmlLayout и производные
Совсем новое направление, но люди используют. И получается, имхо очень даже прилично.
Экзотика
А GTK-то может быть вполне приятным глазу.
Астру cerulean studios «пилили», насколько я помню, почти 3 года. Все это время они, похоже, изобретали свой кросплатформенный фреймворк с панелями и виджетами на основе GDI+. Поражаюсь как они смогли так долго не выпускать новых версий и не помереть…
2) Фреймворк влияет на сложность поиска людей
Вот вбили вы себе в голову к примеру, что надо писать GUI только на WxWidgets. Даете объяление, находите какого человека, который думает что знает как писать на wxWidgets. Он начинает делать GUI. GUI растет, кода все больше, а потом этот человек берет и уходит. А за то время, пока вы писали GUI, ситуация изменилась, и желающих писать на wxWidgets больше не осталось. Все ушли на WPF, к примеру. Или еще есть любители wxWidgets, но неспособные разгрестись в сложном GUI, который был создан первым человеком, а профессионалов нет. И что дальше? Переписывать заново?Поэтому стоит сделать запрос вида «резюме с++ ИМЯ_ФРЕЙМВОРКА» в гугл чтобы оценить сложность поиска человека. На момент написания статьи гугл выдавал вот такое:
MFC — 120000 результатов
WTL — 17600
ATL — 46700
QT — 112000
Htmlayout — 113 (sic!)
GTK — 7600
wxWidgets — 17500
У вас все еще есть вопросы?
Конечно же, эта статистика гугла не говорит о том, что ATL-программиста ровно в 3 раза легче найти, чем WTL-программиста. Но какая-то корреляция здесь есть: ATL-программистов все же проще будет найти, чем человека для GTK или WTL.Для полноты картины:
C# WPF — 1280000 результатов! Мухи не ошибаются3) Фреймворк влияет на разработку
И вот только в-третьих стоит начинать думать, о том грабли какого фреймворка, вас ударят менее сильно. Фреймворки навязывают размер приложения, одинаковый/изменчивый внешний вид под разными ОС и темами рабочего стола, сложность создания кастомных контролов, способ создания MUI и хранения ресурсов, степень корявости UI-дизайнера, шаблоны проектирования, но это уже холиварная тема…Не Windows единой: как писать кросс-платформенные приложения с GUI на C#
На C# можно создавать красивые приложения, но до недавних пор — не для всех платформ. Рассказываем, как писать одно приложение для всех ОС сразу.
Евгений Кучерявый
Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.
Microsoft выпустила уже третью версию кросс-платформенного .NET Core с открытым исходным кодом, но мы до сих пор не получили инструмента для создания графических интерфейсов.
Пока есть Xamarin, который можно использовать только для Windows 10 и мобильных устройств. Но что делать тем, кто хочет создавать графические интерфейсы для Linux или Mac OS?
Тут помогут фреймворки от сторонних разработчиков.
Какой фреймворк выбрать
Мне удалось найти два более-менее популярных фреймворка (оба основаны на Skia):
- SpaceVIL. Он привлёк меня тем, что в нём элементы GUI отрисовываются, а не берутся из API операционной системы. Поэтому приложение будет выглядеть одинаково на всех устройствах. В нём даже можно создавать собственные элементы любого вида. Однако он пока довольно сырой — об этом говорит уже то, что в официальной документации есть ошибки в инструкции для новичков.
- AvaloniaUI. Это более популярный и проработанный фреймворк, который позволяет создавать интерфейсы как для мобильных устройств, так и для Linux и OS X. Также в нём используется диалект XAML, что будет плюсом для тех, кто пробовал создавать приложения для Windows. В нём даже есть поддержка MVVM.
Я попробовал оба, и второй показался мне более удобным: в нём есть язык разметки, поддержка MVVM, быстрая установка, лёгкий переход с WPF. Поэтому я выбрал его.
Как начать использовать AvaloniaUI
Я буду создавать приложение в Linux Ubuntu, но эта инструкция подойдёт всем, кто использует .NET Core. Создавать приложения можно и в Visual Studio, скачав для него расширение, но так как его нет на Linux, я буду пользоваться терминалом.
Для начала клонируйте себе на компьютер этот репозиторий:
В нём находятся шаблоны для создания приложения с AvaloniaUI. Если вы не умеете пользоваться Git, то просто скачайте содержимое и распакуйте куда-нибудь на компьютере. Затем откройте консоль и введите следующую команду:
Теперь приложение можно просто скомпилировать для разных ОС — никаких дополнительных манипуляций для переноса на новую платформу не требуется.
Заключение
10–15 лет назад это показалось бы извращением, но сейчас мы можем писать программы для Linux на языке, который изначально был предназначен для разработки приложений под Windows.
Читайте также:
- Как работает .NET и зачем он нужен
- Подкасты, фронтенд, нетворкинг: как попасть в IT-комьюнити и учиться бесплатно
- Пишем мессенджер на C#. Часть 1. Вёрстка
На чем лучше и быстрее написать GUI приложение?
Возникла такая потребность — нужно написать простое приложение для приёма объявлений в газету. Так-то приложение уже есть, но сделано криво, тормозит и не имеет некоторых нужных функций.
Раньше я писал лишь веб-приложения на RoR. Весь мой опыт разработки десктопных приложений сводится к Делфи, потому что им пользовался мой знакомый и заодно научил меня.
Так вот, как будет лучше написать приложение? Мультиплатформенность желательна, но в принципе пойдет и только виндовая версия.
— Ruby + какой-нибудь GUI фреймворк, но думаю что будет неудобно строить интерфейс и прога будет подтормаживать
— С++ используя Visual Studio (или взять Borland Builder? всё-таки с делфи я знаком уже). Недостаток только один — я плохо знаю С++
— Python — всегда хотел его изучить, стоит ли писать гуёвую прогу на нем?
— Старый добрый Делфи, потому что уже писал на нем что-то.
Базу данных в принципе я уже выбрал — sqlite, ибо удобно, быстро и в одном файлике.
- Вопрос задан более трёх лет назад
- 35452 просмотра