LINUX.ORG.RU

Что выбрать для написания GUI в 2021.

 ,


0

5

Добрый день.

Что лучше выбрать для написания десктопного GUI приложения в 2021 году.

Нужно написать кросплатфоменный интерфейс.

Там должны быть дерево, таблицы (большие, сортировки, группировки, …), формы. Хочется не писать их самостоятельно.

Рассматриваю варианты:

  • C# (WinForms или Avalonia, Gtk), поскольку на c# писал мало, и есть ощущения, что скорость разработки не очень высокая. Сходу полноценных таблиц и деревьев вообще не нашел.

  • Python (PySide6), посмотрел по gui на python. Варианты по сути:

    • PyQt(PySide) 6 версия уже достаточно стабильна ? Документации навскидку не очень много нашел.
    • wxWidgets есть ощущение, что менее мощный. (тут смущает, что будет медленнее C# и опять же GIL).
  • Web (web2ui) тут уже есть готовые хорошие таблицы. (но есть ощущение, что скорость работы будет проигрывать, плюс есть проблемы с работой с локальными ресурсами и многоконностью). По ощущению скорость разработки будет самая быстрая.

В C++ лезть не хочется, так как давно на нем не писал, и есть ощущение, что на нем разработка будет еще медленнее чем на C#.

Предварительно кажется, что python будет компромисным вариантом.

Разработчик пока всего один, и не хочется надолго увязать в написании GUI, так как есть и другие задачи.

У кого какие соображения по данному вопросу ?



Последнее исправление: ol1mp (всего исправлений: 1)

C++ и Qt. Не понял почему ты считаешь, что разработка будет медленной. Таблицы есть. QTableWidget, а лучше модель и QTableView.

ox55ff ★★★★★
()
Ответ на: комментарий от Im_not_a_robot

Везде чужеродно

Поэтому я flatleaf и предложил.

приложение жрет ОТ 500Мб

Зато не сегфолтится.

И кстати, Вейланд-то Свинг поддерживает?

нет пока, но в хвейланде работает.

cocucka ★★★★☆
()
Ответ на: комментарий от cocucka

Поэтому я flatleaf и предложил.

Он конечно симпатичный, но по прежнему чужеродный везде.

Зато не сегфолтится.

Большинство программ не сегфолтится.

нет пока, но

Значит эта технология устаревшая. Только если они не собираются ВОТ-ВОТ НА ДНЯХ сделать поддержку Вейланда.

Im_not_a_robot ★★★★★
()
Ответ на: комментарий от Djanik

Да, именно это меня и смущает, в новых стандартах кучу всего поменяли.

Да и насколько я помню свой опыт, шустрой разработка не выглядела.

ol1mp
() автор топика
Ответ на: комментарий от Djanik

С++ стал другим языком.

Каким он был, таким он и остался.  
Лишь мути всякой добавили пять ведер.
anonymous
()

Наиболее оптимальный и рациональный путь написания GUI приложений на сегодня - это веб-платформа.

javascript
()
Ответ на: комментарий от wolph

Нет. Он при этом еще и самый приятный и удобный, как раз.

javascript
()

Только Electron.

Alve ★★★★★
()
Ответ на: комментарий от Dumppper001

Ничего подобного! В Nuklear уйма возможных бэкендов и чистый код, лишенный этого навоза вроде glib или убожества культяпного.

anonymous
()

PyQt(PySide) 6

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

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от MOPKOBKA

Работает везде.

Ну да, а hello-world самая полезная программа, потому что его портировали практически на все существующие языки.

Толку от этого метапрога? Давай пример настоящего полезного софта.

anonymous
()
Ответ на: комментарий от MOPKOBKA

А мне на тебя вообще плевать.

Ну ты такой один. А на метапрог плевать абсолютно всем, кроме парочки фриков.

anonymous
()

Чтобы потом не жалеть об упущенном времени, упущенных возможностях, лучше сразу выбрать C++. Много имел дела со Swing / SWT (Java), WinForms (C#), но теперь думаю «на фига»? Питон даже близко не советую рассматривать - намучаетесь потом.

anonymous
()

Просто нужно принять простой факт, что за последние лет 15 мало что изменилось в области разработки десктопного софта. Застой обыкновенный. Ну, там hidpi научились поддерживать, некоторые жесты на тачпаде, но это такие мелочи по сравнению со всем остальным. Это вам жабаскрипт, где каждый год добавляют какую-нибудь очередную свистелку. Поэтому в области десктопа советы, которые были справедливы лет 15 назад, справедливы и сейчас. И 2021 год мало чем отличается в этом от 2008, скажем.

anonymous
()
Ответ на: комментарий от anonymous

И 2021 год мало чем отличается в этом от 2008, скажем.

В 2021 году десктопные приложения (наподобие тех, что были в 2008 году) это наверно только профессиональный софт. Остальное переехало в веб и мобилки.

anonymous
()
Ответ на: комментарий от no-such-file

wxWidgets

flutter модно молодёжно

Очевидно, скоро и flutter втащат бэкендом в wx.
*sarcasm*

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 1)
Ответ на: комментарий от Djanik

С++ стал другим языком. Если он давно писал, то не сможет в новые Qt

Можно для тех, кто не умеет пользоваться гуглом, пояснить, в каком месте Qt стал совсем другим с совсем другим C++?

byko3y ★★★★
()
Ответ на: комментарий от habamax

Поней, смузей и переливающегося гуано в ТЗ у ТС не было.

einhander ★★★★★
()
Ответ на: комментарий от Djanik

но этим всем пользоваться совсем не обязательно

Harald ★★★★★
()
Ответ на: комментарий от Djanik

Сложные лямбды в connect, variadic templates, auto. Если не знаешь современных плюсов, хрен разберешься в коде

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

byko3y ★★★★
()
Ответ на: комментарий от byko3y

Auto тоже примитивная штука

namespace {

        auto out_ = [] ( const auto & val_) 
        {
            std::cout << val_;
            return out_ ;
        };

        auto print = [](auto first_param, auto... params)
        {
            out_(first_param);
              if constexpr (sizeof...(params) > 0) {
                
                print(params...);
            }
                return print;
        };
    }

Расскажи, как работает рекурсивный вызов?

Djanik
()
Ответ на: комментарий от Djanik

Расскажи, как работает рекурсивный вызов?

Это к топику вообще не относится. А кутями с новым стандартом стало только проще пользоваться.

anonymous
()

Разработчик пока всего один, и не хочется надолго увязать в написании GUI

А во что умеет разработчик?

shleemypants
()
Ответ на: комментарий от Djanik

Ты та Лиза, у которой была сотня ников? Тогда вопросов нет.

anonymous
()
Ответ на: комментарий от Djanik

auto print = [](auto first_param, auto... params)
print(params...);
Расскажи, как работает рекурсивный вызов?

О, функционал-очка. Я же писал, что вариативные шаблоны — это довольно сложная тема. Да, я понимаю, что это каррирование, и далеко не всякий крестовик со смузи из заморозки сможет этот код разобрать. Как бы лямбды тут не особо при делах, потому что каррирование можно сделать и на обычных шаблонных функциях, а лямбы аргументами ты в коде не передаешь. И автоматический тип толком не используется, аналогичный код можно переписать как:

template<typename T>
static inline void out(T val) {
    std::cout << val;
}

template<typename T, typename... Ts>
static void print(T first_param, Ts... params) {
    print(first_param);
    if constexpr (sizeof...(params) > 0) {
        print(params...);
    }
}

Нету ни лямбд, не auto, и к чему тогда разговор? Проблема только в вариативных шаблонах, которые в Qt не особо играют роль.

byko3y ★★★★
()
Ответ на: комментарий от shleemypants

Опыт больше по python, js(extjs), plsql/plpgsql. perl, с/c++/c#, lua, lisp понемножку.

ol1mp
() автор топика

Смотри, скажу за PyQt. Это хорошая штука, но как только потребуются сложные вещи, которых нету из коробки, то придётся ещё и C++ обмазаться, правда не совсем плотно, но рассчитывай на то что в C++ залезать придётся.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от peregrine

Ну я C++ 17 ковырял, всё то же говно только с сахаром.

Вот да. Непонятно, что там вызвало затруднение у Лизы.

anonymous
()
6 декабря 2021 г.

Круче C + nuklear ты вряд ли что найдешь.

anonymous
()
Ответ на: комментарий от dimgel

догадался

Как по мне, питон для UI ужасен. Либо мордочкотыканье с QTшным редакторои и все сопутствующие проблемы с установкой QT и отсутствием его интеграции в IDE, либо tkinter, который обёртка над Tk, авторам которого нужно запретить иметь ЭВМ и потомство.

izzholtik ★★★
()
Ответ на: комментарий от izzholtik

авторам которого нужно запретить иметь ЭВМ и потомство

Вот автору ублюдского пхытона точно стоит запретить подходить к ЭВМ ближе, чем на 10 метров, а также - иметь потомство!

Аналогично скажу про авторов Qt.

anonymous
()
Ответ на: комментарий от Legioner

Ого! Громкое заявление! Чем это писать пять лучше чем писать одно? Остальные не пойдут как по маслу я уверен.

XoFfiCEr ★★☆☆
()
Ответ на: комментарий от izzholtik

питон просто для тупеньких

Не для просто тупеньких, а для дегенератов полных!

Про тикль согласен отчасти: адская страшиздила. Но и на GTK взгляни: без боли на эту попытку запихать в С ООПщину смотреть невозможно! Вот неужели нельзя было GTK сделать таким же красивым и лаконичным, как nuklear?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.