Go: GUI

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: GUI

Непрочитанное сообщение Olej » 29 фев 2024, 16:15

Olej писал(а):
29 фев 2024, 16:07
посмотреть.

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.3/examples.work/web/tcl.tk$ go run imitguiDemo.go 
imitguiDemo.go:19:2: no required module provides package github.com/edartuz/go-tk/gotk: go.mod file not found in current directory or any parent directory; see 'go help modules'
С этим как-раз понятно...

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.3/examples.work/web/tcl.tk$ go mod init tcl.tk
go: creating new go.mod: module tcl.tk
go: to add module requirements and sums:
	go mod tidy

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.3/examples.work/web/tcl.tk$ go mod tidy
go: finding module for package github.com/edartuz/go-tk/gotk
go: tcl.tk imports
	github.com/edartuz/go-tk/gotk: cannot find module providing package github.com/edartuz/go-tk/gotk: module github.com/edartuz/go-tk/gotk: git ls-remote -q origin in /home/olej/go/pkg/mod/cache/vcs/f7e6ddf976267ef8cbebe4bec72f488d56942ef138e9cfc08b1234f6b720e552: exit status 128:
	fatal: could not read Username for 'https://github.com': terminal prompts disabled
Confirm the import path was entered correctly.
If this is a private repository, see https://golang.org/doc/faq#git_https for additional information.
olej@R420:~/2024/own.BOOKs/BHV.Go.3/examples.work/web/tcl.tk$ go build imitguiDemo.go 
imitguiDemo.go:19:2: no required module provides package github.com/edartuz/go-tk/gotk; to add it:
	go get github.com/edartuz/go-tk/gotk
А вот тут облом: а). это доступ к github.com/edartuz/go-tk/ каким-то образом ограничен? б). или его унесли куда-то и искать надо? в). или это у меня что-то с доступом к github с Username?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: GUI

Непрочитанное сообщение Olej » 29 фев 2024, 19:27

Olej писал(а):
29 фев 2024, 16:15
а). это доступ к github.com/edartuz/go-tk/ каким-то образом ограничен? б). или его унесли куда-то и искать надо? в). или это у меня что-то с доступом к github с Username?
Попытался вручную подключиться к репозиторию, или его части:

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.3/examples.work$ wget https://github.com/edartuz/
--2024-02-29 17:58:00--  https://github.com/edartuz/
Распознаётся github.com (github.com)… 140.82.121.4
Подключение к github.com (github.com)|140.82.121.4|:443... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа… 404 Not Found
2024-02-29 17:58:00 ОШИБКА 404: Not Found.
Вот так!
Но зато контекстный поиск по контексту gotk.GetVar (выдернул из кода) даёт:
Снимок экрана от 2024-02-29 18-23-51.png
Снимок экрана от 2024-02-29 18-23-51.png (62.08 КБ) 132 просмотра
Замечательная всё-же инфраструктура уже выросла вокруг Go :!:

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.3/examples.work/net/tcl.tk$ go mod tidy
go: finding module for package github.com/johnnylee/go-tk/gotk
go: downloading github.com/johnnylee/go-tk v0.0.0-20140212223716-e7a92b3e55d9
go: found github.com/johnnylee/go-tk/gotk in github.com/johnnylee/go-tk v0.0.0-20140212223716-e7a92b3e55d9

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.3/examples.work/net/tcl.tk$ cat go.mod 
module tcl.tk

go 1.22.0

require github.com/johnnylee/go-tk v0.0.0-20140212223716-e7a92b3e55d9
Импорт прописан, импорт проделан...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: GUI

Непрочитанное сообщение Olej » 29 фев 2024, 19:30

Olej писал(а):
29 фев 2024, 19:27
Импорт прописан, импорт проделан...
Сборка:

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.3/examples.work/net/tcl.tk$ go build imitguiDemo.go
# github.com/johnnylee/go-tk/gotk
/home/olej/go/pkg/mod/github.com/johnnylee/go-tk@v0.0.0-20140212223716-e7a92b3e55d9/gotk/gotk.go:7:11: fatal error: tcl.h: No such file or directory
    7 | // #include <tcl.h>
      |           ^~~~~~~
compilation terminated.
А вот эта история понятна: нет девелоперских пакетов Tcl/Tk

Код: Выделить всё

olej@R420:~$ aptitude search tk | grep " tk" | grep dev
p  tk-dev - Toolkit for Tcl and X11 (default version) - development files
p  tk-dev:i386 - Toolkit for Tcl and X11 (default version) - development files
v  tk-itk-dev -
p  tk-itk4-dev - [incr Tk] OOP extension version 4 for Tk - development files
p  tk707 - drum sequencer for a sound card or MIDI device
p  tk8.6-dev - Tk toolkit for Tcl and X11 v8.6 - development files
p  tk8.6-dev:i386 - Tk toolkit for Tcl and X11 v8.6 - development files
p  tkblt-dev - Graphics extension library for Tcl/Tk (development files)
p  tkcon - Enhanced interactive console for developing in Tcl
p  tkinspect - Tk application inspector for developing in Tcl

Код: Выделить всё

olej@R420:~$ aptitude search tcl | grep " tcl" | grep dev
p  libmrpt-tclap-dev - Mobile Robot Programming Toolkit - tclap development package
p  tcl-dev - Tool Command Language (default version) - development files
p  tcl-dev:i386 - Tool Command Language (default version) - development files
p  tcl-expect-dev - Automates interactive applications (development)
p  tcl-expect-dev:i386 - Automates interactive applications (development)
v  tcl-itcl-dev -
p  tcl-itcl4-dev - [incr Tcl] OOP extension for Tcl - development files
p  tcl-memchan-dev - Tcl extension for in-memory channels - development files
p  tcl-snack-dev - Sound extension to Tcl/Tk and Python/Tkinter - development files
p  tcl-trf-dev - Tcl data transformations - development files
p  tcl8.6-dev - Tcl (the Tool Command Language) v8.6 - development files
p  tcl8.6-dev:i386 - Tcl (the Tool Command Language) v8.6 - development files
p  tclcl-dev - transitional dummy package to libtclcl-dev
p  tclx8.4-dev - Extended Tcl (TclX) - development package
p  tclxml-dev - Tcl library for XML parsing - development files

Код: Выделить всё

olej@R420:~$ sudo apt install tcl-dev tk-dev
[sudo] пароль для olej:
Чтение списков пакетов… Готово
Построение дерева зависимостей… Готово
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
  libxss-dev tcl8.6-dev tk8.6-dev
Предлагаемые пакеты:
  tcl-doc tcl8.6-doc tk-doc tk8.6-doc
Следующие НОВЫЕ пакеты будут установлены:
  libxss-dev tcl-dev tcl8.6-dev tk-dev tk8.6-dev
Обновлено 0 пакетов, установлено 5 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 1.808 kB архивов.
После данной операции объём занятого дискового пространства возрастёт на 8.253 kB.
Хотите продолжить? [Д/н] y
Пол:1 http://ubuntu.volia.net/ubuntu-archive jammy/main amd64 libxss-dev amd64 1:1.2.3-1build2 [12,3 kB]
Пол:2 http://ubuntu.volia.net/ubuntu-archive jammy/main amd64 tcl8.6-dev amd64 8.6.12+dfsg-1build1 [1.002 kB]
Пол:3 http://ubuntu.volia.net/ubuntu-archive jammy/main amd64 tcl-dev amd64 8.6.11+1build2 [5.768 B]
Пол:4 http://ubuntu.volia.net/ubuntu-archive jammy/main amd64 tk8.6-dev amd64 8.6.12-1build1 [785 kB]
Пол:5 http://ubuntu.volia.net/ubuntu-archive jammy/main amd64 tk-dev amd64 8.6.11+1build2 [2.904 B]
Получено 1.808 kB за 3с (705 kB/s)
Выбор ранее не выбранного пакета libxss-dev:amd64.
(Чтение базы данных … на данный момент установлено 595033 файла и каталога.)
Подготовка к распаковке …/libxss-dev_1%3a1.2.3-1build2_amd64.deb …
Распаковывается libxss-dev:amd64 (1:1.2.3-1build2) …
Выбор ранее не выбранного пакета tcl8.6-dev:amd64.
Подготовка к распаковке …/tcl8.6-dev_8.6.12+dfsg-1build1_amd64.deb …
Распаковывается tcl8.6-dev:amd64 (8.6.12+dfsg-1build1) …
Выбор ранее не выбранного пакета tcl-dev:amd64.
Подготовка к распаковке …/tcl-dev_8.6.11+1build2_amd64.deb …
Распаковывается tcl-dev:amd64 (8.6.11+1build2) …
Выбор ранее не выбранного пакета tk8.6-dev:amd64.
Подготовка к распаковке …/tk8.6-dev_8.6.12-1build1_amd64.deb …
Распаковывается tk8.6-dev:amd64 (8.6.12-1build1) …
Выбор ранее не выбранного пакета tk-dev:amd64.
Подготовка к распаковке …/tk-dev_8.6.11+1build2_amd64.deb …
Распаковывается tk-dev:amd64 (8.6.11+1build2) …
Настраивается пакет tcl8.6-dev:amd64 (8.6.12+dfsg-1build1) …
Настраивается пакет libxss-dev:amd64 (1:1.2.3-1build2) …
Настраивается пакет tcl-dev:amd64 (8.6.11+1build2) …
Настраивается пакет tk8.6-dev:amd64 (8.6.12-1build1) …
Настраивается пакет tk-dev:amd64 (8.6.11+1build2) …
Обрабатываются триггеры для man-db (2.10.2-1) …

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: GUI

Непрочитанное сообщение Olej » 29 фев 2024, 19:35

Olej писал(а):
29 фев 2024, 19:30
Сборка:
Повторяю сборку:

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.3/examples.work/net/tcl.tk$ go build imitguiDemo.go 
# github.com/johnnylee/go-tk/gotk
In file included from _cgo_export.c:4:
gotk.go: In function ‘CmdCallback’:
gotk.go:12:17: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
gotk.go: In function ‘RegisterCmd’:
gotk.go:16:57: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
# github.com/johnnylee/go-tk/gotk
/home/olej/go/pkg/mod/github.com/johnnylee/go-tk@v0.0.0-20140212223716-e7a92b3e55d9/gotk/gotk.go: In function ‘CmdCallback’:
/home/olej/go/pkg/mod/github.com/johnnylee/go-tk@v0.0.0-20140212223716-e7a92b3e55d9/gotk/gotk.go:12:17: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
   12 | //    CmdDispatch((unsigned int)clientData);
      |                 ^
/home/olej/go/pkg/mod/github.com/johnnylee/go-tk@v0.0.0-20140212223716-e7a92b3e55d9/gotk/gotk.go: In function ‘RegisterCmd’:
/home/olej/go/pkg/mod/github.com/johnnylee/go-tk@v0.0.0-20140212223716-e7a92b3e55d9/gotk/gotk.go:16:57: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
   16 | //    Tcl_CreateObjCommand( interp, cmdName, CmdCallback, (void *)cb, NULL );
      |                                                         ^
Какие-то ворнингсы ... но это в самой связке с Tcl/Tk, потому то в коде демо-задачи просто нет Cgo...
Но:

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.3/examples.work/net/tcl.tk$ ls -o imitguiDemo* 
-rwxrwxr-x 1 olej 2113304 фев 29 18:18 imitguiDemo
-rw-rw-r-- 1 olej   11057 фев 29 18:10 imitguiDemo.go
Можно запускать...

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.3/examples.work/net/tcl.tk$ ./imitguiDemo 
======================= Start imit ==================================
2024/02/29 18:21:08 ------------ Imit started --------------
2024/02/29 18:21:08 ------------ Imit finished --------------
************************ Stop imit **********************************
Снимок экрана от 2024-02-29 18-20-51.png
Снимок экрана от 2024-02-29 18-20-51.png (21.74 КБ) 132 просмотра
Всё клацается ... Всё щёлкается...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: GUI

Непрочитанное сообщение Olej » 29 фев 2024, 19:43

perseus писал(а):
14 май 2017, 13:54
вот прикреплённый файл imitguiDemo.go
7 лет прошло, а код практически неизменный (только поменял пакет импорта):

Код: Выделить всё

//	"github.com/edartuz/go-tk/gotk"
	"github.com/johnnylee/go-tk/gotk"	
А всё так же неизменно работает...
Вложения
imitguiDemo.go
(10.8 КБ) 5 скачиваний

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: GUI

Непрочитанное сообщение Olej » 02 мар 2024, 15:09

perseus писал(а):
28 май 2017, 16:37
Было бы интересно посмотреть технику применения Gtk.
Свежий обзор инструментов в Go для GUI:
Лучшие инструменты для создания графического интерфейса на Golang.
20.02.2024
Хороший обзор ... >25 вариантов инструментария.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: GUI

Непрочитанное сообщение Olej » 02 мар 2024, 17:34

perseus писал(а):
28 май 2017, 16:37
как создавать GUI на GO, используя Gtk ?
GUI на Golang: GTK+ 3
13 авг 2018 в 13:24
Изображение
Эта публикация особенно интересна тем, что для реализации выбрана не только библиотека gotk3 (GTK+3) ... с таким же успехом можно было выбрать любую из 2-3 десятков предстаавленных для Go, а то что для построения графического дизайна использована Glade ... а не вручную прописываются в координатах каждый элемент :!:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: GUI

Непрочитанное сообщение Olej » 02 мар 2024, 17:41

Olej писал(а):
02 мар 2024, 15:09
Хороший обзор ...
Подборка проектов для разработки GUI на Go:
6 апреля 2022
Изображение
Здесь ещё что-то около 66 инструментов ... по GUI и вообще отображению 2D графики и прочее...
В "-" такого обзора - что если пойти по ссылкам, тур в перечень включены проекты давности 4-5-7 лет ... и неизвестно насколько они в развитии.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: GUI

Непрочитанное сообщение Olej » 02 мар 2024, 19:10

perseus писал(а):
28 май 2017, 16:37
может вы сможете нам продемонстрировать тут, как создавать GUI на GO, используя Gtk ?
Ловлю себя на том, что я испытываю отвращение каждый раз, когда нужно делать какое-то GUI приложение.
И занимаюсь этим, с отвращением, когда это какая-то составная чать работы за которую мне платят, выполнемая в рамках должностных обязанностей.
И это тянется ещё со времён Windows 3.0 (а то ещё и Windows 1.5 ... а это всё - самое начало 90-х) :-o ...
Потому что любое GUI приложение ... в любой ОС + на любом языке программирования + с любыми GUI фреймворками - делается тупо одинаково и примитивно:
1. Безумно трудоёмко расписываем координаты всяких виджетов, их вложенность, всякие их стили, приписанные им колоры и фонты... (ужасная тягомуть)...
2. Для пассивных виджетов по их каим-то ID посылае им всякие текстовые строки...
3. По активным виджетам привязываем их активности к функциональным точкам входа реакций1 на активности...
Всё :!:
Тупо и неинтересно...
Единственное что интересно и полезно во всём этом кино - этоиметь какой-то комфортный визуальный генератор форм, которй позволил бы автоматизировать всю эту тупую рутину до точки вызхода на функциональные вызовы, когда всё дальше прописываем в коде...
Из всех таких генераторов-построителей вспоминаю единственный действительно комфортный, который делал разработку GUI в удовольствие - это PhAB (Photon Application Builder) в графической системе Photon операционной системы QNX 6.X Neutrino :!:
Снимок экрана от 2024-03-05 20-19-34.png
Снимок экрана от 2024-03-05 20-19-34.png (206.21 КБ) 120 просмотров
В MS VisualStudio это был (когда то) MFC ... мощный, но весьма посредственный в удобстве и продуктивности...
В Qt - это QtCreator ... но
perseus писал(а):
28 май 2017, 16:37
Было бы интересно посмотреть технику применения Gtk.
он используется только для C++ кода ( :?: ) ...
Для GTK ... и может независимо для любых других GUI фреймворков :?: - это упоминавшаяся уже Glade:
Olej писал(а):
02 мар 2024, 17:34
Glade
Т.е. вопрос постороения GUI приложений, как он мне всегда представлялся ... но это представлялся в практических потребностях, которые заканчивались сданными по работе проектами...
Olej писал(а):
02 мар 2024, 17:34
для построения графического дизайна использована Glade
... вопрос состоит в выборе эффективного генератора GUI геометрических форм.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: GUI

Непрочитанное сообщение Olej » 03 мар 2024, 10:05

Olej писал(а):
02 мар 2024, 19:10
вопрос состоит в выборе эффективного генератора GUI геометрических форм.
Т.е. для меня всегда вопрос приложений GUI - это вопрос наличия достаочного генератора/редактора экранных форм. :!:
Для GTK+ это всегда был ... более-менее достаточный - Glade. Присутствует в любом Linux:

Код: Выделить всё

olej@R420:~$ aptitude search glade | grep " glade"
p  glade - Построитель пользовательских интерфейсов GTK+
p  glade:i386 - Построитель пользовательских интерфейсов GTK+
p  glade2script - Glade interface engine for scripts
p  glade2script-python2 - Glade interface engine for scripts (Python2 version)
p  glade2script-python3 - Glade interface engine for scripts (Python3 version)
p  libxfce4ui-glade - glade API for libxfce4ui
p  libxfce4ui-glade:i386 - glade API for libxfce4ui

Код: Выделить всё

olej@R420:~$ aptitude show glade
Пакет: glade                                     
Версия: 3.38.2-7
Новый: да
Состояние: не установлен
Приоритет: необязательный
Раздел: universe/devel
Сопровождающий: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Архитектура: amd64
Размер в распакованном виде: 1.286 k
Зависит: libc6 (>= 2.34), libcairo2 (>= 1.2.4), libgdk-pixbuf-2.0-0 (>= 2.22.0), libgladeui-2-13 (>= 3.38.1), libglib2.0-0 (>= 2.64.0), libgtk-3-0 (>= 3.24.0),
         libpango-1.0-0 (>= 1.18.0), libxml2 (>= 2.7.4)
Рекомендует: libgtk-3-dev, devhelp
Конфликтует: glade:i386
Описание: Построитель пользовательских интерфейсов GTK+
 Glade — среда быстрой разработки для быстрого и простого создания пользовательских интерфейсов на основе тулкита GTK+. 
 
 The user interfaces designed in Glade are stored in the well-known XML format, enabling easy integration with external tools. You will probably want to use it with tools
 such as GtkBuilder, which can load the XML files and create the interfaces at runtime. 
 
 Эта версия более модульная, чем предыдущие, так что вы можете устанавливать дополнительные модули, чтобы добавить дополнительные виджеты для Glade.
Домашняя страница: https://glade.gnome.org/
Как-то я пользовался ранее ... в каком-то проекте... Вспоминать надо... Впечатления, вроде, хорошие.
Вот даже статейка иллюстрирующая неплохая: GUI на Golang: GTK+ 3
Только я в последовательности действий поступал бы точно в обратной последовательности:
1. Выбраит генератор графических интерфейсов ... Glade в этом случае...
2. Близко к окончательному желательному виду сгенерировать GUI вид...
3. И только после этого всего начинать что-то писать с кодом Go.
Это вот первая такая "пара" пригодная для создания Go GUI: Glade для генерации форм + GTK+3 + пакет "github.com/gotk3/gotk3/gtk" как интерфейс к коду Go ...

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 8 гостей