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)

У кого какие

Сам спросил - сам ответил. Уносите.

anonymous
()

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 ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 3)

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

Зашёл в тему только для того чтобы посоветовать питон. Ан нет, ТС и сам догадался.

dimgel ★★★★★
()

Электрон жи. А что за приложение-то?

Nervous ★★★★★
()

C# для десктопнго приложения будет: 1. не нативное (т.к. GTK# давно протух и в стагнации), 2. жрать много ресурсов CPU.

Flutter: 1. не нативное, 2. нихрена оно не быстрое, 3. тянет в память жирный gtk.so статичную либу (не для виджетов, а для интеграции с системой).

Nim: нет ни одной реально нормальной библиотеки, кажется есть из чего там выбрать на деле нет. У Ginto (GTK3/4/Nim биндинги) был шанс реальный но автор забил из-за «отсутствия популярност», да и не реально много багов там.

Про питон ничего не скажу, не пользовался.

bhfq ★★★★★
()

QT. И биндинги к нему если плюсы не нравятся.

kardapoltsev ★★★★★
()

Qt или WxWidgets c питоном - обе связки нормальные, но если ты заговорил о переносимости приложения, подумай о том, что на оффтопике нужно будет больше приседаний сделать, чтобы такую поделку завести

А так, неожиданно прежу Java, там все есть из коробки: и кроссплатформенность, и gui, и таблицы

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

на оффтопике нужно будет больше приседаний сделать, чтобы такую поделку завести

C wx вообще без проблем.

Shadow ★★★★★
()

Лучше всего писать нативный софт. Если есть достаточно большая общая часть, то её пишешь на C или C++, а GUI пишешь на C+Gtk/C+++Qt/C#+WinUI/Objective C+Cocoa/Java+Android в зависимости от конкретной платформы. Ничего страшного в том, что придётся написать 5 приложений вместо одного - нет, по сути основные усилия уйдут на первое, а остальные уже пойдут как по маслу.

Второй вариант это использовать веб-приложения. Пишешь GUI на HTML + JavaScript, а часть, которая не может работать в браузере, пишешь на C++ и общаешься с ней через аддон.

Ни в коем случае не связывайся с кросс-платформенными фреймворками или Electron. Это рак современного IT.

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

Lazarus или Qt

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

C# для десктопнго приложения будет: 1. не нативное (т.к. GTK# давно протух и в стагнации), 2. жрать много ресурсов CPU.

gtk# протух, а avolonia и uno platform - нет

Ford_Focus ★★★★★
()

Выберете пожалуйста GTK. Просто он мне самому нравится и хочется чтоб этот тулкит был популярен. Зато честно.

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

а avolonia и uno platform - нет

и оба выглядят как Г, там лютый жор cpu/gpu на банальный ресайз окна калькулятора или хелоу ворда.

был такой давно муз. плеер Banshee на mono/Gtk#, так вот ни CPU ни тем более GPU/vram оно не жрало. Запустил я тут калькулятор на uno platform и как говорится «сделайте меня развидеть это» тормозное позорище в котором лагает даже ввод и клики мышкой.

У GtkD был хороший шанс стать нормальной библиотекой для десктопных приложений но там багов куча, компиляция проекта с gradle файлом толком не работает падает на их жуткой макросне.

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

ты меня прям забайтил скачать богомерзкий snap и запустить uno calculator.

https://drive.google.com/file/d/1yy2XRh6ce8SrVXg1o7ePNISCUtvnjMye/view?usp=sharing

там лютый жор cpu/gpu на банальный ресайз окна калькулятора

тормозное позорище в котором лагает даже ввод и клики мышкой

жора процессора не наблюдаю ни при каких манипуляциях с окном, во время ввода и «вычислений» - тоже

и оба выглядят как Г

не наблюдаю никаких проблем с внешним видом. Даже напротив, его внешний вид мне нравится больше, чем у KCalc. Вот памяти ему нужно сильно больше, чем KCalc’y - это да…

и всё это на протухшем AMD E2-7110 для планшетов и нетбуков. А на каком калькуляторе сидишь ты?

Ford_Focus ★★★★★
()

GUI

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

Ты реально работал с большими проектами? Если бы да, то такую чушь не писал бы.

anonymous
()

Я мог бы посоветовать Tcl/Tk или FLTK, так как Qt и Gtk жирные, не говоря уже о всяких извращениях вроде Windows Forms которые однозначно не кроссплатформенные.

А вообще если хочешь кроссплатформенное, то нужна или маленькая либа, которую можно к себе в дистрибутив закинуть, или Qt и Gtk, потому что всё прочее в дефолтной поставке отсутствует. Но я считаю что более лёгкие либы лучше, так что смотри на Tk и FLTK в первую очередь.

Xenius ★★★★★
()

Ничего нету. Потому что такие как вы хитрожопые хотят взять готовое решение на халяву, где им всё запилено во всех отработанных сценариях. А вложить хотя бы 1 бакс в помощь разным проектам так и нет вас. Вот и жрите Qt от корпов или поделия от студентов, где нужно прежде еще заплатить 100500 баксов своему разрабу, прежде чем он это поделие доведет до ума.

foror ★★★★★
()

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

Lazarus, GTK, Qt

pihter ★★★★★
()

Vala с GTK.

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

Круто. Думал, что tkinter только для реализации минимального gui подходит.

Стоит видимо присмотреться к ниму получше.

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

Выберете пожалуйста GTK. Просто он мне самому нравится и хочется чтоб этот тулкит был популярен. Зато честно.

Его возможно встроить в программу статически?

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

Это ещё с релизом .NET 6 будет, а он в ноябре + пока мясом обрастет. Хотя если ТС нужно не нужно сильно сложный гуй то может превью палкой потыкать.

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

По внешнему виду будет зависеть от используемого тулкита (awt и swt выглядят нативно, swing выглядит чужеродно и стремненько, но можно кастомизировать)

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

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

ну кому-то и двигатель на уазике перебрать на скорую руку не проблема

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

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

Я сужу по виртуалке vmware, собирал сам из сорцов релизную версию. Kcalc в виртуалке летает, как и gnome-calculator. Но сабж лагает.

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

Угу и поддержку линукса там пишет «community» ну как пишет, накопипастили из gtk# код и пошло оно дальше стагнировать. Почему копипастили? Потому что пол года назад во время видимо бурного ctlc ctlv они наделали ошибок и не собиралось, хотя собрать тогда смысла не было, линуксового таргета сборки не было, да и как самих файлов проектов.

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

мб при сборке накосячил? я просто поставил пакет, на реальном железе проблемы нет

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

У GtkD был хороший шанс стать нормальной библиотекой для десктопных приложений но там багов куча, компиляция проекта с gradle файлом

Это какая там куча багов и причем тут gradle файл?

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

Его возможно встроить в программу статически?

Никогда не пробовал. Насколько мне известно, такой вариант сборки официально не поддерживается. Так что скорее всего ждут разные грабли.

anonymous
()

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

Если картинки не нужны, то бери TUI https://github.com/rivo/tview

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

Ну так разница между gradle и glade все-таки значительная, нет? Issues, если их посмотреть на скорую руку, их всего 44 шт. для такого большого проекта это немного, это раз, и, во-вторых, там много запросов на улучшение, т.е. багов, получается, там еще меньше.

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

yetanother ★★
()

GTK минимум версии 2.6, а в идеале актуальной 4 версии. Либо Qt минимум версии 5.6, а лучше 6.

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

Плюсую Nuklear, правда он слишком примитивен. Но традиционный ГУЙ все равно пора начинать закапывать.

anonymous
()

QML - самая высокая скорость разработки на сегодня. Выглядит на твердые 5-.

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

Везде чужеродно и приложение жрет ОТ 500Мб – договаривай все, а не только преимущества :)

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

Впрочем, электроноподелия тоже жрут от 500 и выглядят чужеродно.

Im_not_a_robot ★★★★★
()
Последнее исправление: Im_not_a_robot (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.