На чем писать 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
    Последнее исправление: ol1mp 13.07.21 20:15:10 MSK (всего исправлений: 1)

    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)

    Какие существуют инструменты для разработки GUI десктопных приложений? [закрыт]

    Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме.

    Закрыт 4 года назад .

    Как и с помощью каких инструментов разрабатываются gui десктопных приложений? Сам являюсь web-разработчиком, и в вебе gui привязывается к front-end, и пишется на html, css, js. А что используется при разработке gui десктопных приложений? И как построен сам процесс?

    Отслеживать
    задан 30 авг 2019 в 19:49
    Василий Пупкин Василий Пупкин
    73 1 1 серебряный знак 11 11 бронзовых знаков

    Все операционки предоставляют некий API, посредством которого возможно создание гуя. Далее, можно пользоваться голым апи или использовать более высокоуровневые, а то и кросс-платформенные обёртки. List of platform-independent GUI libraries

    30 авг 2019 в 19:53

    C# и C++ это совсем разные языки и разные подходы к разработке десктопа. На них нельзя дать общий ответ 🙂 Оставьте один тэг

    – user177221
    30 авг 2019 в 20:54
    Возможно, вам как веб-разработчику, стоит посмотреть на Electron
    30 авг 2019 в 21:43

    2 ответа 2

    Сортировка: Сброс на вариант по умолчанию

    Отвечу только за С++ Есть много вариантов —

    QT — https://www.qt.io/ Библиотека для создания кросс-платформенных гуев (поддерживает свой генератор make файла qmake и CMake)

    Masking — олдовый вариант (под dos и т.д)

    FLTK — https://www.fltk.org/ — по суди обертка над OGL

    GTK — https://www.gtk.org/ — конкурент QT работает под X и Wayland

    Процесс построен как все процессы разработки на C++ : используем библиотеку которая обеспечивает связь с X или fb и реализуем бизнес-логику приложения

    Отслеживать
    ответ дан 30 авг 2019 в 20:24
    user326165 user326165
    github.com/vurtun/nuklear ещё доволно неплоха.
    30 авг 2019 в 20:29
    30 авг 2019 в 20:40
    nuklear сишная же
    – user326165
    30 авг 2019 в 21:13
    что не мешает быть ей неплохой, заметь 🙂
    30 авг 2019 в 21:19
    это не значит что она плохая) это значит что спрашивали про с++
    – user326165
    30 авг 2019 в 21:28

    Из тех что знаю и в которых работал это Qt и WinForms.

    ВЫглядит как то так:

    Qt Creator предоставляет средства визуального программирования пользовательского интерефейса (чистый с++). Есть редактор формы, позволяющий располагать на форме элементы (кнопки, лейблы, текстбоксы) и программировать события связанные с ними.

    Еще в Qt есть такая фича как QtQuick и собственный язык разметки — QML (думаю это будет для вас ближе). Я в ту степь не лез, подробнее рассказать не могу. Но точно знаю что с помощью того что написал выше тоже можно наклепать GUI.

    WinForms это API для разработки пользовательских интерфейсов и является частью .NET. В отличии от Qt не настолько кросс-платформенный и больше подходит для разработки под винду. Средства визуального программирования под WinForms предоставляет Microsoft Visual Studio. Можно писать как на с# так и на CLR/С++(так уже никто не делает). На шарпах достаточно удобно.

    Разработка пользовательского интерфейса: принципы

    И 10 советов по проверке любого интерфейса на дружелюбие к пользователю.

    Сергей Ломакин

    Дата публикации: 1 мар 2023

    Разработка пользовательского интерфейса: принципы

    Сергей Ломакин Редакция «Текстерры»

    Расскажем, на каких языках программирования создается GUI, надо ли уметь программировать и что для этого нужно вообще. В конце — 10 самых важных советов с принципами разработки пользовательского интерфейса.

    Что сейчас актуально для создания GUI?

    Осваиваю Visual C++ и, собственно, задался этим вопросом с целью найти оптимальное решение с прицелом на межплатформенность. Начал довольно странно, а именно с Qt 🙂 . Потом вспомнил о «чуде» под названием MFC, немножко поковырявшись в нем сложилось впечатление, что MFC это творчество душевнобольного человека. Возможно я неправ и меня испортил Qt .

    К чему я это все? Просто хочу узнать ваше мнение. Что сейчас актуально для создания GUI ? Можно ли предположить, что Win32 API + MFC это отмирающие (знать конечно нужно для общего развития, но не более), а Qt и wxWidgets это актуальное настоящее и за подобными межплатформенными разработками будущее ? Так как, разработчик должен тратить львиную часть своего времени на написание логики, а не на создание визуальных эффектов. Также не стоит ограничивать себя одной платформой, но это опять таки мое скромное мнение.

    PS: Есть еще парочка вопросов:
    1. Как обстоят дела с СОМ технологиями ?
    2. Посоветуйте учебники по написанию сетевых приложений в С++ и C# .

    �� Подобається Сподобалось 0

    До обраного В обраному 0

    Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
    Ctrl + Enter

    39 коментарів

    Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
    Ctrl + Enter

    Маленький офтоп. Для тех, кто мучится с установкой Qt для Visual Studio Windows 7:

    1. Требования Qt для Windows:doc.qt.nokia.com/. ements-win.html или doc.crossplatform.ru/. ements-win.html . В итоге у вас должно быть: Microsoft’s DirectX Software Development Kit, Microsoft’s Windows Server 2003 R2 Platform SDK, Microsoft Windows SDK for Windows 7, ActivePerl и все обновления для Windows 7 (и в частности для Visual Studio). Также не забываем о Qt Visual Studio Add-in.

    2. Установка Qt для Windows: для Visual Studio doc.qt.nokia.com/. nstall-win.html (русский аналог doc.crossplatform.ru/. nstall-win.html ). Для Visual Studio 2010 www.cyberforum.ru/. read340639.html (использование jom спорно, вполне можно обойтись nmake)

    3. Если у вас при посещении Visual Studio Command Prompt есть ошибка «ERROR: Cannot determine the location of the VS Common Tools folder.» Лечится так: в установках переменных окружения в переменную среды PATH добавляем С:\windows\system32

    Насчет параметров ввода configure. Если у вас все запросы пункта 1 удовлетворены, то выполняем команду: configure -debug-and-release -opensource -platform win32-msvc2010 (вместо 2010 ваша версия Visual Studio) и не паримся.

    Еще раз повторюсь, что очень важно удовлетворить требования Qt для Windows (1 пункт) иначе рискуете получить ошибки на этапе компиляции Qt, а затем долго и нудно искать на форумах решение этих проблем (которое приведет вас в итоге к 1 пункту 😀 ).

    PS: Надеюсь, что мой «мануал» кому то сэкономит время и нервы : ) .

    найти оптимальное решение с прицелом на межплатформенность.

    хєх. 15 лет назад я задавался этим вопросом и так ничего не решилось , была надежда на mono и порт Forms но они решили двигаться через gtk, хотя это не с++
    с си — wxWidgets внутри очень похож на MFC — дефайны и все такое, хотя некоторые проги выглядят очень даже, таже audacity
    qt — ну вы сами знаете,
    есть еще xul (недавно выпиляный из файрфокса) — например в VirtualBox пользуется и движек OpenOffice
    но вообще выбор зависит от задач — если нужен гуй гармонично вписанный в систему, то тут на родном будет легче, вплоть до написания под каждую ось своей морды (как тот же файрфокс)

    если просто более менее — то qt и wx — вполне

    ScorpZ Lapshov C++/C# && other programmer в AMC Bridge 08.09.2011 13:47

    1. Как обстоят дела с СОМ технологиями ?

    COM технологию уже лет как убил и закопал NET, если вы не собираетесь поддерживать старый код, то забудте про нее.

    2. Посоветуйте учебники по написанию сетевых приложений в С++ и C# .

    Тут больше зависит от системы , где ты буш писать эти приложения. Если под виндой на том же C#, то это набор NET классов и к укровню сокетов тебя фиг кто допустит (при желании конечно можно поковыряться, но это если есть необходимость).
    Под тем же линухом, у тебя выбор поболее, ты можешь работать с сетью чрез сетевой интерфейс той же Qt например или мудохаться с уровнем сокетов (сетевой уровень TCP/IP) напрямую, можешь заюзать какуе то модную либу — курл, например, васе зависит от целей и задач.
    На счет ГУИ под виндой тут счас ситуация довольно таки запутанная, основной выбор прогерров — C#/NET. Есть люди, которые юзают С++/Qt. Такой свзяки как C++/NET не существуюет.
    По последнему пункту — мелкософт, по каким то причинам, поступило довольно по скотски.
    а) — Есть висул студия «с поддержкой языка С++»

    б) — Есть , довольно мощная, платформа NET

    Так вот, в висуале, ты можешь писать на С++, но при этом нельзяю юзать NET либы (тот же гуи)

    Или ты можешь писать с использованием NET, но при этом мелкософт тебе подсовывает язык программирования — «C++/CLI» — эт такая хренька, которая, при ближайшем рассмотрении, ничего обзщего (или очень мало общего) имеет с языком программирования С++.

    Вот, вобщем таки вот пироги.

    Ivan M Software Engineer в Лідер ринку 08.09.2011 15:46

    COM технологию уже лет как убил и закопал NET, если вы не собираетесь поддерживать старый код, то забудте про нее.

    Частично не соглашусь, если нужно делать специфические вещи, связаные с виндой, часто без COM не обойтись.

    ScorpZ Lapshov C++/C# && other programmer в AMC Bridge 09.09.2011 10:30

    Согласен, но с оговоркой, если уже говорить о специфических вещах, то не обойтись и без WinAPI, все эти — NET, Qt да и то же MFC — это очень модно(это не про МФЦ), красиво и быстро в плане разработки, но когда речь заходит о (очень специфические вещи) то без WiaAPI, в некоторых случаях того же СОМ — не обойтись.

    COM технологию уже лет как убил и закопал NET, если вы не собираетесь поддерживать старый код, то забудте про нее.

    не убил и не закопал. Как ты напишеш например тулбар к IE? .net тут помощет, но без понимания комовских интерфейсов все равно не обойдешся

    Спс за информацию, пока буду учить Qt, C#.NET. Потом займусь как нибудь API и COM.

    Vadym Baranenko Solution Architect в EPAM 07.09.2011 08:36
    Повеселила фраза про

    MFC это творчество душевнобольного человека

    У меня в универе было точно такое же впечатления после того как посмотрел на него после джавовского свинга. Хотя свинг тоже не особо любят, но по сравнению с MFC это конфетка 🙂

    Volodymyr Sydorenko Директор в Cinegy Systems LLC 08.09.2011 14:25
    Когда он только появился — то впечатление было у масс другое 🙂

    Ибо тогда не было Qt (родился на три года позже), не было .Net, не было даже wtl %), а был WinAPI — по сравнению с ним MFC оказался более чем крут.

    Ну а сейчас писать на MFC — однозначно изврат. Это то же самое, что пытаться запрячь лошадь в автомобиль. Конечно можно, если постараться.

    Ну и микрософт специально и придумала C++/CLI для тех, кто хочет писать на С++, но не хочет учить С# (.Net правда учить все равно придется — но ничего не бывает просто так). Ну или там, где технически С# не подходит для каких либо задач. А вообще С+±нику начать писать на C#/.Net — это достаточно просто. У нас ни у кого из ребят проблем при переходе не было.

    Volodymyr Sydorenko Директор в Cinegy Systems LLC 08.09.2011 14:28

    Когда он только появился — то впечатление было у масс другое 🙂
    Ибо тогда не было Qt (родился на три года позже), не было .Net, не было даже wtl %), а был WinAPI — по сравнению с ним MFC оказался более чем крут.

    Ну а сейчас писать на MFC — однозначно изврат. Это то же самое, что пытаться запрячь лошадь в автомобиль. Конечно можно, если постараться.

    Ну и микрософт специально и придумала C++/CLI для тех, кто хочет писать на С++ (все же что-то общее у них есть %), но не хочет учить С# (.Net правда учить все равно придется — но ничего не бывает просто так). Ну или там, где технически С# не подходит для каких либо задач. А вообще С+±нику начать писать на C#/.Net — это достаточно просто. У нас ни у кого из ребят проблем при переходе не было. Да и в принципе можно микшировать языки в проекте — но только если это оправдано.

    Vadym Baranenko Solution Architect в EPAM 08.09.2011 14:42

    Я это знаю и радует что прогресс не стоит на месте 🙂

    Ivan M Software Engineer в Лідер ринку 08.09.2011 15:48

    C++/CLI скорее служит как bridge между native и managed code, потому что от C++ он отличается довольно таки сильно.

    Для шаблонного и простого ГПИ подойдет Qt. Но если вам нужен особенный и индивидуальный ГПИ, то однозначно нужно использовать средства платформы: WPF, Cocoa, GTK. WinAPI используется там где есть время на нем писать, в старых проектах и в таких проектах как Evernote. На Qt так же можно писать красивые интерфейсы используя QSS.
    В целом вам нужно ориентироваться на рынок на котором вы планируете продавать свои услуги. Если это Украина, то вакансий по Qt вы найдете не много. Насколько я знаю, Qt сейчас используется в Materialize в разработке мед. программ, в GlobalLogic в разработке муз. программы от Avid и все. C# используется практически везде, в том смысле, что вакансий очень много. Так же не мало вакансий требующих знаний Cocoa под Макинтош.

    Если вы прицелены на заграницу, то нужно изучать спрос на зарубежных сайтах по работе. Так, Autodesk Maya 2011 портирована на Qt.

    GTK+ это в основном ведь Linux ? Для С++ это gtkmm, а С#.NET это Gtk# . В Cocoa на С#.NET это NObjective и Cocoa Sharp. Как тут с ними?

    Да, GTK это для Линукса, в основном под оболочку Gnome. В KDE используется Qt.
    Я не слышал, что бы кто то использовал NObjective и Cocoa Sharp в серьёзных проектах. Для Мака используется язык Objective C и Сосоа АПИ. C# это только для Виндоуз.

    Коментар порушує правила спільноти і видалений модераторами.

    А ещё для Linux и Mac OS.

    Давайте будем реалистами: Ц№ не для винды — это извращение. Речь не о языке, а о платформе.

    А какая среда разработки под win для qt сейчас популярна ? Кроме Microsoft Visual Studio, целый день убил на установку Qt libraries под vs2005-2010.Так нечего и не вышло . Как с Qt Creator ?

    Вам сложно, потому что вы начинающий. Когда разберетесь, то сможете за 10 минут настроить Visual Studio для работы с библиотеками Qt. Не забывайте про Qt Visual Studio Add-in. Читайте, разбирайтесь, в интернете много информации. Правда в основном на английском.
    Qt Creator, по-моему, еще редко где используется. В основном в небольших открытых проектах.

    У меня траблы на этапе компиляции библиотеки, в основном трабла с qmake. Я все форумы обегал в писке решения, буду изучать qt в Qt Creator.

    а зачем ее компилировать? там есть готовые бинарники.

    скомпилить новичку ее полностью будет очень тяжело. Например понадобится скачать и поставить либы/хиадере к mysql чтобы соответсвующий коннектор скомпилить, еще понадобится DirectX. Вообщем нужно ставить сдк и не парится.

    Ну я качаю Qt libraries 4.7.4 for Windows, далее все как в инструкции doc.qt.nokia.com/. nstall-win.html . Все форумы уже обходил и разные комбинации попробовал. Итог один — Building qmake failed, return code 2 . В конечном счете скачал их Qt SDK и учу Qt Creator.

    Изначально ругается на Microsoft’s DirectX Software Development Kit, хотя он у меня стоит. Как и MW SDK 7.1 и все возможные обновления, даже ActiveState Perl поставил .

    почитай доку, как это билдать под видной. Думаю тебе достаточно будет запускать configure не с параметрами по-умолчанию, а отключить phonon. Хотя сакральный смысл «побилдать»в ситуации когда доступны все нужные библиотеки до меня не доходит.

    Sergey dfg Software architect / Senior C++ developer в CTO 08.09.2011 12:57

    Насколько я знаю, Qt сейчас используется в Materialize в разработке мед. программ

    Вы правы:) Год назад наша команда внедрила Qt в проект(www.materialise.com/mimics) над которым я сейчас работаю. На данный момент мы единственная команада в Materialise, котрая использует Qt и уже сейчас к нам подходят люди с других команд и интересуются Qt, так как эта технология полностью себя оправдала:
    1) хорошо продуманный дизайн и архитектура
    2) по сравнению с MFC экономит много времени при создании GUI
    3) можно без проблем миксить Qt и MFC, сажать Qt контролы на MFC и наоборот. Для нас это был очень важный критерий так как приложение реализовано на MFC и его расширениях, переписать все на Qt сразу просто нереально.
    4) Qt это не только GUI билиотека — есть функционал по работе с базамы данных, сетями, мультимедиа и т.д. Вообщем еще много очень вкусного.
    5) Отличная документация
    6) Можно бесплатно использовать в комерческих целях с одним ограничением: можно использовать только динамические библиотеки Qt(я так понимаю своего рода реклама) и нельзя изменять исходники. Нашему продукту эти ограничения абсолютно не мешают. Вероятность того, что нужно что-то менять или фиксить в Qt очень маленькая.

    7) Без проблем интегрируется в MS Visual Studio 2005 — 2010

    Вообще мы рассматривали много технологий для ускорения разработки GUI и Qt оказался лучшим выбором.

    Дать простой ответ на ваш вопрос необычайно сложно. Тут дело не в выборе конкретного средства разработки UI, а скорее, это выбор вашего будущего пути, как программиста.

    C++ до сих пор используется для разработки кроссплатформенных приложений и приложений, которым нужен полный контроль над памятью и другими ресурсами системы. Скорость работы приложения — вот главный критерий выбора С++ как основного языка разработки. Кроме того, существует множество успешных проектов, которые создавались заокеанскими разработчиками около 8 — 10 лет назад. Тогда альтернативы С++ не было, но многие из этих проектов сейчас передаются в Украину на аутсорс, так что С++ разработчики будут ценится еще долго.
    Если вы сконцентрируетесь на изучении С++, и конкретно под Windows, то вам будет необходимо хорошо владеть WinAPI и COM. Скорее всего это понадобится и для кроссплатформенной разработки, только вам еще будет необходимо знать и устройство Linux\Mac.
    Про MFC и WTL может пока забыть, если понадобится — то это дело учится довольно легко.

    Чуть не забыл, на С++, вам придется писать сравнительно много кода, чтобы добиться конкретного результата.

    .NET (C#) и Java — эти языки созданы для упрощения программирования бизнес задач. Позволяют добиваться необходимых задач меньшим количеством строк кода и без изобретения велосипедов. GUI приложения на Java выглядят довольно плачевно. На C# вы можете использовать технологии WinForms или WPF, которые позволят быстро создавать десктопные приложения. При помощи WPF вы можете очень просто делать чудеса. Но, гарантированно работать это будет только под Windows.
    .NET (ASP.NET) и Java одинаково хороши на серверной стороне. Например, серьезные банковские приложения, использующие несколько серверов, предпочитают работать больше с Java, но и .NET тут не уступает, и все больше и больше серьезных корпоративных приложений пишутся на .NET.

    Но, «порог входа» в эти технологии довольно высок. Именно поэтому очень много вакантных мест и специалисты по этим технологиям получают в среднем высокие зарплаты.

    Ну, и если мы говорим о серверных приложениях, то тут необходимо упомянуть такие языки, как Perl, PHP, Python, Ruby. В основном они используются для разработки веб приложений и делают веб разработку простой. Тут то и используется HTML+Javscript+CSS для UI.

    Я бы посоветовал вам попробовать все по чуть-чуть и понять что вам больше по вкусу.

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

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