Go: GUI

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

Модератор: Olej

Аватара пользователя
perseus
Писатель
Сообщения: 99
Зарегистрирован: 11 май 2017, 18:01
Откуда: Щёлково, Московская обл.
Контактная информация:

Re: GUI на Go

Непрочитанное сообщение perseus » 14 май 2017, 13:58

Olej писал(а): Есть ещё очень интересный вариант, описываемый в Интернет: реализуется средствами пакетов Go WEB-интерфейс, куда код Go отрисовывает виджеты и откуда получает реакции пользователя (кнопки управления и т.д.).
Это реализуется исключительно средствами Go.
P.S. Если снова попадётся на глаза (уже несколько раз видел) - выложу ссылки.

Это очень даже стоит попробовать!
Вы имеете ввиду использование WEB-браузера и HTML ? Или чтото иное ?

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

Re: GUI на Go

Непрочитанное сообщение Olej » 14 май 2017, 14:00

perseus писал(а):Прошу прощения, вот прикреплённый файл imitguiDemo.go
Замечательно ;-)
А остальные файлы? :cry: :
perseus писал(а):

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

maksim@ASUS ~/Progy/Go/src/imitator $ ls -l
итого 1864
-rw-r--r-- 1 maksim maksim    7594 апр.  14 15:53 dumpIMIT
-rw-r--r-- 1 maksim maksim    7372 апр.  13 14:01 dumpSHS
-rw-r--r-- 1 maksim maksim   40032 мая    3 14:57 imit.go
-rwxr-xr-x 1 maksim maksim 1793800 мая   14 13:38 imitguiDemo
-rw-r--r-- 1 maksim maksim   11019 мая   14 12:59 imitguiDemo.go
-rw-r--r-- 1 maksim maksim   13260 мая   14 12:09 imitgui.go
-rw-r--r-- 1 maksim maksim   24353 апр.  25 13:52 imitproto.go
drwx------ 2 maksim maksim    4096 апр.  28 14:15 params
Они что из себя представляют?

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

Re: GUI на Go

Непрочитанное сообщение Olej » 14 май 2017, 14:01

perseus писал(а):Вы имеете ввиду использование WEB-браузера и HTML ? Или чтото иное ?
Да, именно.
Я видел очень интересный реализации (малой кровью) на Go, выполненные в такой технике.

Аватара пользователя
perseus
Писатель
Сообщения: 99
Зарегистрирован: 11 май 2017, 18:01
Откуда: Щёлково, Московская обл.
Контактная информация:

Re: GUI на Go

Непрочитанное сообщение perseus » 14 май 2017, 14:04

Olej писал(а): А остальные файлы? :cry: :
Они что из себя представляют?
Олег Иванович, остальные файлы к демонстрации не имеют никакого отношения, они просто лежали в этой папке. Файл imitguiDemo.go я создал на основании своих рабочих версий программы имитатора, их тут обсуждать не надо.
С уважением ...

Аватара пользователя
perseus
Писатель
Сообщения: 99
Зарегистрирован: 11 май 2017, 18:01
Откуда: Щёлково, Московская обл.
Контактная информация:

Re: GUI на Go

Непрочитанное сообщение perseus » 14 май 2017, 14:09

Olej писал(а):
perseus писал(а):Вы имеете ввиду использование WEB-браузера и HTML ? Или чтото иное ?
Да, именно.
Я видел очень интересный реализации (малой кровью) на Go, выполненные в такой технике.
У меня был опыт реализации интерфейса GUI с помощью WEB-браузера и HTML, используя шаблоны (patterns) Go, к базе данных PostgresQL. Да, так можно создавать GUI, но тогда необходим WEB-браузер, а это не во всех случях приемлимо. Tk, Qt, Gtk дают возможность создавать "автономный" GUI (автономный в кавычках, учитывая его зависимость от динамических библиотек)

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

Re: GUI на Go

Непрочитанное сообщение Olej » 21 май 2017, 16:28

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

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

[olej@dell Go]$ go build imitguiDemo.go 
imitguiDemo.go:19:2: cannot find package "github.com/edartuz/go-tk/gotk" in any of:
	/usr/lib/golang/src/github.com/edartuz/go-tk/gotk (from $GOROOT)
	/home/olej/2016_WORK/GoBook/src/github.com/edartuz/go-tk/gotk (from $GOPATH)
:cry:
Придётся вспоминать что там с конфигурированием пакетов в GoLang...

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

Re: GUI на Go

Непрочитанное сообщение Olej » 21 май 2017, 19:43

Olej писал(а):Придётся вспоминать что там с конфигурированием пакетов в GoLang...
Простейший способ, чтобы не сильно мудрить (с нормальной установкой пакетов средствами GoLang) это:
Прописываю в $HOME/.bashrc строчку:

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

[olej@dell 2]$ cat ~/.bashrc | grep GO
export GOPATH=$HOME/2017_WORK/own.WORK/Go
Проверяю:

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

[olej@dell 2]$ env | grep GO
GOPATH=/home/olej/2017_WORK/own.WORK/Go
Создаю указанный путь:

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

[olej@dell Go]$ mkdir -p src/github.com/edartuz/go-tk/gotk
perseus писал(а):заинтересованным советую поизучать примеры из пакетов gothic и gotk, выложенных на github.com
там очень доходчиво демонстрируются различные приёмы работы с Tcl/Tk из программы на Go
https://github.com/nsf/gothic
https://github.com/edartuz/go-tk
Копирую туда *.go из скачанного пакета go-tk:

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

[olej@dell Go]$ tree src
src
└── github.com
    └── edartuz
        └── go-tk
            └── gotk
                └── gotk.go

4 directories, 1 file

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

Re: GUI на Go

Непрочитанное сообщение Olej » 21 май 2017, 20:03

Olej писал(а): Копирую туда *.go из скачанного пакета go-tk:
Теперь всё готово...

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

[olej@dell Go]$ go build imitguiDemo.go
# github.com/edartuz/go-tk/gotk
src/github.com/edartuz/go-tk/gotk/gotk.go:7:18: fatal error: tcl.h: No such file or directory
 // #include <tcl.h>
                  ^
compilation terminated.
Это привычная ошибка - не установлен *-devel пакет (разработчика), в данном случае tcl:

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

[olej@dell ~]$ sudo dnf install tcl-devel
[sudo] пароль для olej:
Последняя проверка окончания срока действия метаданных: 1:17:05 назад, Sun May 21 17:44:59 2017.
Зависимости разрешены.
=====================================================================================================================================
 Package                        Архитектура                 Версия                                 Репозиторий                 Размер
=====================================================================================================================================
Установка:
 tcl-devel                      x86_64                      1:8.6.4-1.fc23                         fedora                      186 k
 
Результат операции
=====================================================================================================================================
Установка  1 Пакет
 
Объем загрузки: 186 k
Объем изменений: 766 k
Продолжить? [д/Н]: y
Загрузка пакетов:
tcl-devel-8.6.4-1.fc23.x86_64.rpm                                                                    114 kB/s | 186 kB     00:01
-------------------------------------------------------------------------------------------------------------------------------------
Общий размер                                                                                          65 kB/s | 186 kB     00:02
Проверка транзакции
Проверка транзакции успешно завершена.
Идет проверка транзакции
Тест транзакции проведен успешно
Выполнение транзакции
  Установка    : tcl-devel-1:8.6.4-1.fc23.x86_64                                                                                 1/1
  Проверка     : tcl-devel-1:8.6.4-1.fc23.x86_64                                                                                 1/1

Установлено:
  tcl-devel.x86_64 1:8.6.4-1.fc23
  
Выполнено!
Дальше...

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

[olej@dell Go]$ go build imitguiDemo.go
# github.com/edartuz/go-tk/gotk
src/github.com/edartuz/go-tk/gotk/gotk.go:8:17: fatal error: tk.h: No such file or directory
 // #include <tk.h>

compilation terminated.
                 ^
Та же история:

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

[olej@dell ~]$ sudo dnf install tk-devel
Последняя проверка окончания срока действия метаданных: 1:42:09 назад, Sun May 21 17:44:59 2017.
Зависимости разрешены.
=====================================================================================================================================
 Package                        Архитектура                  Версия                               Репозиторий                  Размер
=====================================================================================================================================
Установка:
 tk-devel                       x86_64                       1:8.6.4-2.fc23                       fedora                       495 k
 
Результат операции
=====================================================================================================================================
Установка  1 Пакет

Объем загрузки: 495 k
Объем изменений: 894 k
Продолжить? [д/Н]: y
Загрузка пакетов:
tk-devel-8.6.4-2.fc23.x86_64.rpm                                                                     453 kB/s | 495 kB     00:01
-------------------------------------------------------------------------------------------------------------------------------------
Общий размер                                                                                         220 kB/s | 495 kB     00:02
Проверка транзакции
Проверка транзакции успешно завершена.
Идет проверка транзакции
Тест транзакции проведен успешно
Выполнение транзакции
  Установка    : tk-devel-1:8.6.4-2.fc23.x86_64                                                                                  1/1
  Проверка     : tk-devel-1:8.6.4-2.fc23.x86_64                                                                                  1/1

Установлено:
  tk-devel.x86_64 1:8.6.4-2.fc23
  
Выполнено!

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

Re: GUI на Go

Непрочитанное сообщение Olej » 21 май 2017, 20:11

Olej писал(а): Дальше...

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

[olej@dell Go]$ go build imitguiDemo.go 
# github.com/edartuz/go-tk/gotk
In file included from $WORK/github.com/edartuz/go-tk/gotk/_obj/_cgo_export.c:2:0:
src/github.com/edartuz/go-tk/gotk/gotk.go: В функции «CmdCallback»:
src/github.com/edartuz/go-tk/gotk/gotk.go:12:17: предупреждение: приведение указателя к целому другого размера [-Wpointer-to-int-cast]
 //    CmdDispatch((unsigned int)clientData);
                 ^
src/github.com/edartuz/go-tk/gotk/gotk.go: В функции «RegisterCmd»:
src/github.com/edartuz/go-tk/gotk/gotk.go:16:57: предупреждение: приведение к типу указателя от целого другого размера [-Wint-to-pointer-cast]
 //    Tcl_CreateObjCommand( interp, cmdName, CmdCallback, (void *)cb, NULL );
                                                         ^
# github.com/edartuz/go-tk/gotk
src/github.com/edartuz/go-tk/gotk/gotk.go: В функции «CmdCallback»:
src/github.com/edartuz/go-tk/gotk/gotk.go:12:17: предупреждение: приведение указателя к целому другого размера [-Wpointer-to-int-cast]
 //    CmdDispatch((unsigned int)clientData);
                 ^
src/github.com/edartuz/go-tk/gotk/gotk.go: В функции «RegisterCmd»:
src/github.com/edartuz/go-tk/gotk/gotk.go:16:57: предупреждение: приведение к типу указателя от целого другого размера [-Wint-to-pointer-cast]
 //    Tcl_CreateObjCommand( interp, cmdName, CmdCallback, (void *)cb, NULL );
                                                         ^
P.S. Автору - это плохая история, эти 2 предупреждения - их не должно быть!

Но всё скомпилировалось:

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

[olej@dell Go]$ ls -l im*
-rwxr-xr-x 1 olej olej 2745888 май 21 19:29 imitguiDemo
-rw-rw-r-- 1 olej olej   11019 май 21 17:29 imitguiDemo.go
Можно запускать:

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

[olej@dell Go]$ ./imitguiDemo 
======================= Start imit ==================================
2017/05/21 19:32:08 ------------ Imit started --------------
2017/05/21 19:32:08 ------------ Imit finished --------------
************************ Stop imit **********************************
Можно поклацать... :lol:
Вложения
tcl1.png
tcl1.png (17.25 КБ) 3508 просмотров

Аватара пользователя
perseus
Писатель
Сообщения: 99
Зарегистрирован: 11 май 2017, 18:01
Откуда: Щёлково, Московская обл.
Контактная информация:

Re: GUI на Go

Непрочитанное сообщение perseus » 28 май 2017, 16:23

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

[olej@dell Go]$ go build imitguiDemo.go 
# github.com/edartuz/go-tk/gotk
In file included from $WORK/github.com/edartuz/go-tk/gotk/_obj/_cgo_export.c:2:0:
src/github.com/edartuz/go-tk/gotk/gotk.go: В функции «CmdCallback»:
src/github.com/edartuz/go-tk/gotk/gotk.go:12:17: предупреждение: приведение указателя к целому другого размера [-Wpointer-to-int-cast]
 //    CmdDispatch((unsigned int)clientData);
                 ^
src/github.com/edartuz/go-tk/gotk/gotk.go: В функции «RegisterCmd»:
src/github.com/edartuz/go-tk/gotk/gotk.go:16:57: предупреждение: приведение к типу указателя от целого другого размера [-Wint-to-pointer-cast]
 //    Tcl_CreateObjCommand( interp, cmdName, CmdCallback, (void *)cb, NULL );
                                                         ^
# github.com/edartuz/go-tk/gotk
src/github.com/edartuz/go-tk/gotk/gotk.go: В функции «CmdCallback»:
src/github.com/edartuz/go-tk/gotk/gotk.go:12:17: предупреждение: приведение указателя к целому другого размера [-Wpointer-to-int-cast]
 //    CmdDispatch((unsigned int)clientData);
                 ^
src/github.com/edartuz/go-tk/gotk/gotk.go: В функции «RegisterCmd»:
src/github.com/edartuz/go-tk/gotk/gotk.go:16:57: предупреждение: приведение к типу указателя от целого другого размера [-Wint-to-pointer-cast]
 //    Tcl_CreateObjCommand( interp, cmdName, CmdCallback, (void *)cb, NULL );
                                                         ^
P.S. Автору - это плохая история, эти 2 предупреждения - их не должно быть!
Эти два предупреждения тянутся из пакета gotk, они появляются при компиляции самого пакета gotk.
Пакет gothic компилируется на Fedora25 без ошибок и предупреждений, рекомендую его использовать.

Ответить

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

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

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