LINUX.ORG.RU
ФорумTalks

Жэтека, ай, Жетека, покажи личико!

 , ,


0

2

Брожу я всё вокруг да около всяких библиотек для построения GUI. Сейчас начал ковырять GTK, но что-то их Glade ведёт себя не так, как я ожидаю (у меня есть немного опыта с Qt и ncurses).

Ткните меня в краткую, увлекательную и современную статью как всем этим пользоваться. А то вот, например, набросал виджетов, а они не масштабируются. Вроде всякие Expand/Alignment потыкал, но толку нет.

Мне не нужна полная и точная документация. Я не буду сейчас это читать. Мне нужно что-то достаточное для старта, просто чтобы узнать нравится мне GTK или нужно продолжать поиск. Что-то поверхностное, но покрывающее реально базовые вещи. После прочтения которых можно набросать полезный интерфейс для «боевой» задачи, а не кнопку «Hello, mouse».

А то статей много, но они либо совсем примитивные (а очень часто ещё и устаревшие) либо разбирают какой-то совсем тонкий нюанс.


Бродил Гаврила в дебрях GUI,
Наткнулся он на ЖэТэКа.
Гаврила клацал кнопки всуэ,
Он не осилил НиХеРа.

cocucka ★★★★☆
()

«потыкай» для начала старенький Tk :-) хочешь из tcl или через tkinter из питона. Так команд всего ничего http://www.tcl-lang.org/man/tcl8.6/TkCmd/contents.htm

он простой как полено, но разберёшься с geometry manager (всякие pack,grid,place) и тогда после понятнее станут заклинания визуальных дизайнеров Gtk, Qt. И всякие сигналы/слоты/колбеки. Они всё равно примерно одинаково устроены.

Вообще коренной разницы между Gtk и Qt Widgets нет. Qt чуть фичастее, Gtk чуть быстрее. Кривизна рук нивелирует разницу

Хинт: если пишешь не граф.редактор, пиши так чтобы можно было сделать командный интерфейс. Тогда потом сверху можно нахлобучить любой GUI вплоть до броузерного электрона

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

Меня сейчас интересует именно GTK. Я работал с Qt, так что общую концепцию понимаю.

Я просто не хочу ни читать официальную документацию в надежде СЛУЧАЙНО наткнуться на полезную информацию; настроения для эспериментов методом тыка у меня тоже нет.

Поэтому я спрашиваю, а вдруг есть какая-то статья, которая считается эталоном для тех кто только начинает играться с GTK.

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

Если c++ или python, возьми wx и не парься.

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

Писать GUI в коде – слишком много возни. Неприемлемо много возни если у тебя больше чем поле ввода и две кнопки. А для поля ввода с парой кнопок не нужен GUI.

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

А то вот, например, набросал виджетов, а они не масштабируются. Вроде всякие Expand/Alignment потыкал, но толку нет.

Можно проверить, что и у виджетов-родителей, и у виджетов-детей выставлены соответствующие флаги.

Можно попробовать «современную» альтернативу Glade. Соответственно, это программа на питоне и работает через встроенный WebKit widget: Cambalache.

gag ★★★★★
()

их Glade ведёт себя не так

«Нарисовать» виджеты в коде быстрее, чем понять, как этой косой поделкой пользоваться. Нервов меньше потратишь.

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

Не я первый начал гаврилиаду. Усрусер этим давно промышляет и сей опус был посвящён ему.

cocucka ★★★★☆
()

Жэтека, ай, Жетека, покажи личико!

Когда коверкают названия - показатель некомпетентности.

Мне не нужна полная и точная документация.

Я предлагаю сорвать покровы и просто написать - «я тупой, я выбрал не ту профессию!»

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

ТС, не мучай мозги, бери React/Angular/Vue и рисуй всё на них, потом в Электрон завернешь. Если нужны высокопроизводительные куски - в Ноду они подключаются модулями или собираются через вебассемблер.

Если тебе зачем-то нужен нейтив перформанс (спойлер: почти никогда не нужно), можно попробовать Yew для Rust. Он программируется примерно как React, за исключением того, что это Rust. Ну и потом тоже завернуть в Электрон - без гигабайта блоатвари с ангуляром, оно будет весить минимум в раме.

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

Да не буду я вебятиной пользоваться: она, может, и проста для тривиальных случаев, но для практических задач Си++ банально проще.

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

зачем-то нужен нейтив перформанс (спойлер: почти никогда не нужно)

Взять бы вас всех таких и сослать в глушь, в четвёртый Пентиум :D

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

Тебя из-за этого из щитбрейнса и попятили?

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

ТС, не мучай мозги, бери React/Angular/Vue и рисуй всё на них

Но КАК????

Все нормальные UI рисуются так:

https://i.stack.imgur.com/3WBei.png

И только в React/Angular/Vue в Электрон ты в лучшем случае рисуешь так:

https://getbootstrap.com/

В худшем случае рисуешь так:

https://www.codepicky.com/sass-less-intro/

Да блин художникам без рук легче, чем формошлёпу в web!

Shadow ★★★★★
()

В современной гэтэке glade deprecated и использоваться не должен. Пиши xml для gtkbuilder руками (вроде есть средства для предпросмотра)

Это фактически их официальная позиция. Ссылку сейчас дать не смогу

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

В современной гэтэке glade deprecated и использоваться не должен. Пиши xml для gtkbuilder руками (вроде есть средства для предпросмотра)

Устарел glade, формат файлов с описанием GUI, а не Glade, редактор GUI, который экспортирует как в glade, так и в gtkbuilder форматах.

gag ★★★★★
()

скорее всего сайзеры это чисто кутяшная фишка, возможно в каких-нибудь wxWidgets они тоже есть, но в жтк надо паковать все в стеки и фреймы так чтобы обходилось без них. Только что пролистал туториал из 60 видосов и никаких пружин там не нашел.

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

Мне не нужна полная и точная документация.

Я предлагаю сорвать покровы и просто написать - «я тупой, я выбрал не ту профессию!»

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

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

ТС, не мучай мозги, бери React/Angular/Vue и рисуй всё на них, потом в Электрон завернешь. Если нужны высокопроизводительные куски - в Ноду они подключаются модулями или собираются через вебассемблер.

Вот с таким подходом инсталляторам некоторых дистрибутивов уже мало 2 Гб RAM, хотя сам линукс еще работает.

А вообще, построение GUI на Lazarus/FreePascal сильно недооценено, особенно в линуксовом мире. Получаются быстрые нативные приложения, не отжирающие гигабайты на самые простейшие вещи. При этом можно быстро въехать в тему.

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

Это называется «меня забанили в youtube и google search». Ну и плохой троллинг.

Второе - «новая, развитая»? Да ей сто лет в обед!

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

Это называется «меня забанили в youtube и google search». Ну и плохой троллинг.

Речь же вообще, а не про где найти?

Второе - «новая, развитая»? Да ей сто лет в обед!

Для кого-то всегда новая. Ну и вообще-то многое и поменялось, причем с обратной совместимостью сильно хреново. Это программу на WinAPI чуть ли не для Win 1.0 можно скомпилировать в Win10 без переделки или с косметическими правками. А здесь вам не тут :)

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

Это программу на WinAPI чуть ли не для Win 1.0 можно скомпилировать в Win10 без переделки или с косметическими правками.

Что за хрень я читаю? Ты когда под Win последний раз писал?

Ещё раз, забанили ТС в поисковиках? Да там примеров…
Мне всегда такие как ты нравились, защитники тупака. Ну защищай, чего нет. Ты его тему читал? Если так пренебрежительно набрасывать, при этом как-бэ прося помощи…

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

Что за хрень я читаю? Ты когда под Win последний раз писал?

Не слишком сложную, не лезущую в дебри, программу на чистом WinAPI таки можно. Поменять только некоторые инклуды придется.

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

Это программу на WinAPI чуть ли не для Win 1.0 можно скомпилировать в Win10 без переделки

Именно так. Любой может убедиться, собрав примеры программ из книги 1993 года на современной студии под современную Windows: https://www.frolov-lib.ru/books/bsp/v14/index.html

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

Через winelib на свежей убунте тоже работает. Можно брать его (winelib) в качестве тулкита. Писать правда придётся на голом WinAPI, заодно нытики, хипстеры, вкатуны и тп отсеются от настоящих программистов (тут мем с двумя собаками).

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

от настоящих программистов

Дай пожалуйста определение. (тут мем с двумя котами)

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

Статей вообще крайне мало, есть сорцы существующих программ на GTK, иногда примеры (как, например, в документации к GJS), но тут уже как повезёт с самой версией GTK. Увы.

Princesska ★★★★
()

Мне нужно что-то достаточное для старта, просто чтобы узнать нравится мне GTK или нужно продолжать поиск.

Как человеку, который раньше кодил ранее на Qt, тебе точно GTK+ не понравится. Он слишком низкоуровневый и многословный, с запутанным ООП через макросню.

Есть смысл посмотреть на gtkmm или Vala, там есть сахарок.

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

Есть смысл посмотреть на gtkmm

А я его и использую: я всё равно на Си++ пишу.

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

Ты показал сетку с фиксированной разметкой. Если у тебя такой случай - то да, легче всё в Дельфи нарисовать.

А теперь у тебя другая задача - сделать приложение, которе будет одновременно работать на мониторах любых размеров и DPI, и на мобильных устройствах подо все модели всех iOS и Android.

Включая рефлоу элементов под слишком маленькие экраны, резину под слишком большие, перевороты в горизонтальные и вертикальные положения, работу в темной и светлой теме, озвучу для слепых (accessibility), работу с разными контроллерами (тач-экран, мышка, тачпапад, геймпад) и тому подобное. Плюс технические особенности вроде того, что интерфейс не должен тормозить, поэтому какой-нибудь Флаттер заранее компилирует кеш шейдеров для осуществления плавных переходов между всеми элементами

Отдельная проблема, которую решают веб-интерфейсы - это «одностраничники», т.к. на практике пользователям удобнее всё видеть на одном экране мега-приложения, чем раскидывать данные по разным формам. Формы заставляют думать и пытаться разобраться в своей неинтуитивной структуре. А чтобы всё засунуть на один экран, нужно писать хитрые мутации и транзишены, для которых собственно и созданы все эти концепции вроде Редукса

И вот тут можно брать все эти дизайнеры с точечками и выбрасывать на помойку

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

Что-то вспомнил правило мобильной разработки: сколько не пиши кросс-платформу, все закончится набором нейтив вариантов - и, сцуко, оно ещё и проще поддерживаться будет.

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

Если ты всё приложение пишешь в 1 лицо, то изучать много платформ и языков и подо все писать нативные приложения - не вариант )))

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