С Новым годом! Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/37: Рейтинг темы: голосов - 37, средняя оценка - 5.00
Автор канал по Лиспу
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
1

Как писать графический интерфейс для Лиспа?

24.09.2021, 19:36. Показов 6792. Ответов 85

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Для большинства программ ныне требуется графический интерфейс, поэтому хочу изучить его разработку.
Какие библиотеки вы могли бы посоветовать? Основным критерием является доступность для изучения.
Я уже рассматривал некоторые варианты. LTK прост в изучении но выглядит довольно невзрачно, CommonQT хорошее решение. Вся проблема в отсутствии уроков по этим библиотекам.
Подскажите пожалуйста, как лучше изучить эти библиотеки? И какую выбрать. Вся проблема сводится к документации. Для известных библиотек уроки снимают на C++ а его я изучать не намерен.
Помогите пожалуйста!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.09.2021, 19:36
Ответы с готовыми решениями:

Как создать графический интерфейс для приложения
Здравствуйте! Недавно закончил написание программы на Си, но у неё нет графического интерфейса....

Как сделать графический интерфейс для программы?
Доброго времени суток. Подскажите, как создать графический интерфейс. К примеру написал программу...

Как писать интерфейс для своих библиотек
В книге "Алгоритмы на Java" есть 3 шага (см. фото). Как создавать свои библиотеки я разобрался....

Как создать графический интерфейс для несколько задач
Ситуация следущая: нужно созать графический интерфейс з менюшкой, где каждий пункт визивает поля...

Как сделать графический интерфейс для данного кода
import requests, time from bs4 import BeautifulSoup import csv headers = {'User-agent':...

85
215 / 210 / 8
Регистрация: 09.06.2019
Сообщений: 238
Записей в блоге: 1
28.09.2021, 08:45 41
Author24 — интернет-сервис помощи студентам
у тебя на кнопках в качестве команд не функции, а результат их выполнения при создания кнопок. ты лямбды забыл поставить.

Добавлено через 1 час 38 минут
вот кстати учебник по LTK http://www.peter-herth.de/ltk/ltkdoc.pdf
2
Автор канал по Лиспу
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
28.09.2021, 15:02  [ТС] 42
IisNuINu, Спасибо! Теперь всё работает.
0
215 / 210 / 8
Регистрация: 09.06.2019
Сообщений: 238
Записей в блоге: 1
28.09.2021, 15:25 43
Regrin1, вообщем я поискал в интернете есть замечательный набор обучающих примеров по LTK, рекомендую начать с него

https://peterlane.netlify.app/ltk-examples/

помимо этого набора примеров, их автор написал интересный пакет, основанный на LTK, для построения графиков и диаграмм
возможно вам понадобится,
это вот документация по этому пакету:
https://peterlane.netlify.app/ltk-plotchart/
2
Автор канал по Лиспу
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
28.09.2021, 23:10  [ТС] 44
IisNuINu, Вот это уже совсем счастье!

Добавлено через 4 часа 0 минут
IisNuINu, Я тут читал тему Tcl/Tk via Common Lisp и LTK и никак не могу понять, что вообще происходит. LTK написан на Лиспе, или это обернутый Лиспом Tcl? Саму библиотеку ругали за плохую архитектуру, грозились переписать. Чем в итоге дело кончилось? Так стоит ли игра свеч, или изучать более перспективные библиотеки? Мне б хоть что-то изучить...
0
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
29.09.2021, 00:35 45
Есть язык tcl. Он реализован на си, но ему это неважно.

Для него есть расширение tk, предоставляющее графические функции. Тоже написано на си, но из самого tcl/tk не чувствуется.

Есть программа wish, которая представляет собой интерпретатор tcl/tk с прикрученной графикой. Пребавная вещь. Можно запустить из терминала - появится окошко. И прямо дальше в терминал написать, например,
Код
button .b -text 'my button'
и на окошке появится кнопка. Интерпретация!

LTK делает именно это: запускает wish, отправляет ему команды и принимает сообщения от самого wish-а. Например, пусть по нажатию кнопки меняется текст какого-нибудь лейбла. Тогда процесс выглядит так. Лисп запускает виш и отправляет ему команды "нарисовать кнопку", "нарисовать лейбл". При этом лисп знает, что на сообщение "нажата кнопка" надо прореагировать вызовом функции "отправить команду изменения текста лейбла". Когда юзер нажимает кнопку, виш (вспомогательным кодом, написанным на tcl) отправляет лиспу сообщение "нажата кнопка". Лисп реагирует вызовом функции, отправляя команду изменить текст.

Для сравнения, в других языках обычно не реализуют диалог с вишем, а используют FFI для вызова сишных рисовательных функций, которые живут внутри tk.

LTKшные объекты - просто обёртки над командами tk. Например, с объектом "кнопка" ассоциированы tk-шное имя и лисповая функция - обработчик нажатия; эти данные подставляются в шаблон команды, чтобы получить tk-шную команда создания этой кнопки.

LTKшные объекты эфемерны, им нужно подключение к вишу. Не бывает "кнопка на фрейме сама по себе", только "кнопка на фрейме для конкретного виша". Меня всегда это сбивает с толку. В принципе, при дизайне приложения имеет смысл создать внутрилисповый "идеальный" UI, отвечающий за логику и состояние, который может жить сколько угодно; и функцию отображения этого объекта на "материальный виш", когда тот запущен. Потому что мешать логику и общение с внешним миром - это как-то некрасиво.

А что я выше писал про клиент-сервер - я имел в виду то же самое, но без требования универсальности, заточенное под конкретное приложение. То есть можно на нормальном человеческом Qt, на плюсах, написать GUI с кнопкой и лейблом, которая будет читать и интерпретировать, например, стандартный ввод, и понимать одну-единственную команду "установить текст лейбла"; и писать в стандартный ввод "нажата кнопка". Вызывать эту прогу из лиспа и общаться по этому адхоковому протоколу. Что примечательно, лисповая часть и GUI при этом максимально разделены; GUI может написать и протестировать человек, не знающий лиспа.

Добавлено через 2 минуты
Цитата Сообщение от Regrin1 Посмотреть сообщение
Так стоит ли игра свеч, или изучать более перспективные библиотеки?
Немного почитать про LTK, чтобы быть в состоянии в обнимку с мануалом написать несложный GUI на коленке. А перспективных библиотек, может, и нет? Веб-интерфейс имхо самых перспективный.

Добавлено через 3 минуты
Как говорится, "Emacs и есть GUI".
0
331 / 199 / 9
Регистрация: 12.05.2015
Сообщений: 334
29.09.2021, 05:27 46
Цитата Сообщение от Regrin1 Посмотреть сообщение
Саму библиотеку ругали за плохую архитектуру, грозились переписать. Чем в итоге дело кончилось?
Заглохло не родившись.
LTK вечно живой из-за той же архитектуры
0
Автор канал по Лиспу
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
29.09.2021, 08:39  [ТС] 47
helter, А если решит человек, что это решение неидеально, нужно сделать своё, нативное, с ещё лучшей архитектурой, да такое, чтоб выглядело красиво, а работать было бы проще чем с LTK. Допустим у него имеется некоторая сумма денег. Сколько будет стоить разработка такого решения? В 15 000 руб. он уложится, если наймет программиста высокой квалификации?
0
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
29.09.2021, 11:45 48
Да ну. Это же двести долларов, квалифицированному программисту зарплата на пару дней. Графический тулкит он не напишет.

Для лиспера графический тулкит мечты - CLIM https://common-lisp.net/project/mcclim/. Потому что в нём есть буквы "CL". Можно составить впечатление, насколько сложно силами энтузиастов разрабатывать тулкит. Разработка движется медленно, работает плохо. Теоретически можно иметь разные бэкенды, чтобы работало на всех системах, но практически есть только для иксов. Было дело, собирали всем миром деньги и нанимали квалифицированного программиста. https://common-lisp.net/project/mcclim/posts/ Он несколько месяцев поработал, что-то сделал, но сомневаюсь, что макклим стал значительно юзабельней.

Добавлено через 2 минуты
Хотя работать с климом сложнее, чем с LTK. Какой-то он мудрёный сам по себе. А LTK, со своей стороны, трудно переплюнуть по простоте.
1
100 / 8 / 2
Регистрация: 12.03.2014
Сообщений: 10
04.10.2021, 19:36 49
Доступной для изучения является библиотека CAPI в LispWorks: обширная документация (начиная с пошагового введения с примерами кончая справочником), многоплатформная. Трудности могут быть с английским и коммерческим применением (поскольку небесплатная). Но если Вам поизучать и понять, как устроена самая грамотная GUI среда, рекомендую.
3
Автор канал по Лиспу
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
05.10.2021, 07:56  [ТС] 50
helter, Скажите пожалуйста, а есть ли сведения сколько длилась разработка TK и LTK, кем велась и сколько всё это стоило?
0
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
05.10.2021, 11:38 51
LTK написал, если не перевираю фамилию, Herth - где-то в файлах она написана. Сколько времени он на неё потратил - не знаю, можно по гит лог, наверно, оценить. Сомневаюсь, что кто-то платил ему деньги - наверно, писал из любви к искусству, как и все.

Насчёт Tcl/Tk - не знаю, кто и с какой мотивацией ими занимается. Проект живой, то есть разработка продолжается.
1
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
10.11.2021, 16:39 52
Кстати, на основе браузерного интерфейса человек что-то невероятное делает: https://github.com/rabbibotton/clog
Надо как-нибудь опробовать.
2
Автор канал по Лиспу
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
11.11.2021, 16:39  [ТС] 53
helter, А эта библиотека для работы с браузером, или каждое приложение само себе браузер?
0
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
11.11.2021, 16:54 54
Браузер - любой, имеющийся в системе. Он взаимодействует с пользователем (фронтенд), а лисповый процесс - бэкенд. Общаются по двустороннему каналу - через вебсокет.

Добавлено через 1 минуту
Можно сказать, это разновидность веб-приложения.
1
Автор канал по Лиспу
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
11.11.2021, 18:25  [ТС] 55
helter, Хорошая штука. Послушайте, я тут вот о чём подумал. Для Паскаля есть Лазарус и Delphi, для других языков Qt Designer. Все они позволяют довольно просто составлять графический интерфейс. Кажется такое есть и в HomeLisp. А нет ли такой программы для Common Lisp?
0
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
11.11.2021, 19:16 56
Это проблемы стран первого мира, а у нас трудности начинаются с наличия тулкитов. Зато мы верим в выразительную мощь S-выражений. (Я, вообще, дремучий человек насчёт интерфейсов. На мой взгляд, у вима идеальный UI.)
0
Автор канал по Лиспу
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
11.11.2021, 19:37  [ТС] 57
helter, Скажите пожалуйста, как вы думаете, CLIM уже достаточно развит для того, чтобы быть "конкурентоспособным"?
0
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
11.11.2021, 19:55 58
Нет, он плохо работает (McCLIM). Навскидку: падает и не поднимается; не поддерживаются раскладки клавиатуры; для выбора пункта меню нужно удерживать кнопку мыши. И страшный на вид. У LispWorks есть свой (закрытый) CLIM, но они почему-то рекомендуют вместо него свой же CAPI. Может, потому что CLIM слишком мудрёный?
0
Автор канал по Лиспу
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
11.11.2021, 20:14  [ТС] 59
helter, Эх, жалко. А почему КЛИМ мудрёный? Это вина архитекторов? Стоит ли вообще обращать на КЛИМ внимание? Или лучше подумать об opengl?

Добавлено через 2 минуты
Интересно, сколько миллионов будет стоить выкупить у LispWorks исходники их CAPI?
0
331 / 199 / 9
Регистрация: 12.05.2015
Сообщений: 334
11.11.2021, 22:33 60
Цитата Сообщение от helter Посмотреть сообщение
У LispWorks есть свой (закрытый) CLIM, но они почему-то рекомендуют вместо него свой же CAPI. Может, потому что CLIM слишком мудрёный?
Он у них не свой а комитетский несмотря на платность
Рекомендуют потому что платный CLIM прибит гвоздями к Motif
А переписанный с нуля CAPI использует gtk и что родное для яблочной macosx.
Их кокурент Franz даже сей платный CLIM выложил в открытый доступ пару лет назад.

Добавлено через 37 минут
Цитата Сообщение от Regrin1 Посмотреть сообщение
helter, Хорошая штука. Послушайте, я тут вот о чём подумал. Для Паскаля есть Лазарус и Delphi, для других языков Qt Designer. Все они позволяют довольно просто составлять графический интерфейс. Кажется такое есть и в HomeLisp. А нет ли такой программы для Common Lisp?
Qt Designer есть везде где подключается Qt. Так же как аналогичный Glade есть для Gtk.
Лисп тут от других языков не отличается

Добавлено через 13 минут
Цитата Сообщение от Regrin1 Посмотреть сообщение
helterИнтересно, сколько миллионов будет стоить выкупить у LispWorks исходники их CAPI?
Можно и бесплатный IUP напильником.
http://webserver2.tecgraf.puc-... alled.html
0
11.11.2021, 22:33
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.11.2021, 22:33
Помогаю со студенческими работами здесь

Как быстро сделать графический интерфейс для консольной программы под windows на С++ ?
В общем я студент прошу сориентировать по такому вопросу. У меня есть консольная программа которая...

Графический интерфейс для Cygwin
Кто-нибудь может порекомендовать графический интерфейс для запуска программ из пакета TISEAN под...

Графический интерфейс для программы
Доброго времени суток! Задали в универе написать программу с графическим интерфейсом для проверки...

Графический интерфейс для приложения c++
Мне надо написать графический интерфейс к программе. Выглядеть должно примерно так: два поля для...

Графический интерфейс для класса
Есть класс, который был написан для консольного проекта. Нужно сделать для него графический...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru