На чем писать gui
Перейти к содержимому

На чем писать gui

  • автор:

Что выбрать для написания 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):

    1. SpaceVIL. Он привлёк меня тем, что в нём элементы GUI отрисовываются, а не берутся из API операционной системы. Поэтому приложение будет выглядеть одинаково на всех устройствах. В нём даже можно создавать собственные элементы любого вида. Однако он пока довольно сырой — об этом говорит уже то, что в официальной документации есть ошибки в инструкции для новичков.
    2. 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 просмотра

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *