Go: GUI

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

Модератор: Olej

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

Go: GUI

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

Olej писал(а):
02 мар 2024, 19:10
вопрос состоит в выборе эффективного генератора GUI геометрических форм
Tcl/Tk с их GUI я всегда питал определённую слабость :-D ... см. Re: Python - графика
Изображение
Там же в теме ... времён работы над теми заказными проектами (~ февраль 2019) - рассмотрены несколько визуальных генераторов имиджей для Python GUI приложений:
1. rapyd: http://www.bitflipper.ca/rapyd/rapyd-1-0-2.tgz - которого на сегодня нет ... или перенесли и искать надо где-то в другом месте.
2. GUI конструктор - pygubu: https://github.com/alejandroautalan/pygubu, который доделан 2-3 года назад ... но мелкие правки в GIT пишутся даже на прошлой неделе, живой...
3. проект PAGE - Python Automatic GUI Generator - Version 8.0 с подробнейшей документацией Welcome to the PAGE Documentation - но он как-раз и состоит в использовании Visual Tcl для генерации GUI Python.

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

Go: GUI

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

Olej писал(а):
03 мар 2024, 12:45
Tcl/Tk
Подключение пакета go-tk уже описывалось и проделывалось здесь же в теме: Go: GUI...
Olej писал(а):
03 мар 2024, 12:45
состоит в использовании Visual Tcl для генерации GUI Python
А если для генерации форм задействовать очень популярный в своё время Visual Tcl + подключить код Go для отработки логики приложения - то получается совсем себе даже не слабый путь...
Сайт Visual Tcl...
Version
8.6

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

Go: GUI

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

Olej писал(а):
03 мар 2024, 13:01
Сайт Visual Tcl...
Это 2016 год ... но для генерации форм это не умаляет его достоинств...
Про инсталляцию здесь: Installation...
Download ZIP: https://github.com/hpheidinger/vtcl.vtc ... master.zip

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

olej@R420:~/2024/Go/GUI/Tcl.Tk$ ls -l vtcl.vtcl-8.6-master.zip
-rw-rw-r-- 1 olej olej 2552237 мар  3 12:16 vtcl.vtcl-8.6-master.zip
Unzip or untar Visual Tcl into a permanent location. I recommend /usr/local/vtcl or /usr/vtcl.

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

root@R420:/opt# mkdir /opt/vtcl

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

root@R420:/opt# du -hs /opt/vtcl 
7,9M	/opt/vttl

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

root@R420:/opt# ls -o /opt/vtcl 
итого 308
-rw-r--r-- 1 root    405 мар 19  2016 Bugs-8.6
-rw-r--r-- 1 root   3233 мар 19  2016 Changelog-8.6.0
-rwxr-xr-x 1 root    987 мар 19  2016 configure
drwxr-xr-x 4 root   4096 мар 19  2016 demo
drwxr-xr-x 3 root   4096 мар 19  2016 doc
drwxr-xr-x 3 root   4096 мар 19  2016 Freewrap
drwxr-xr-x 3 root   4096 мар 19  2016 images
-rw-r--r-- 1 root   2055 мар 19  2016 INSTALL-Freewrap
drwxr-xr-x 8 root   4096 мар 19  2016 lib
-rw-r--r-- 1 root  18311 мар 19  2016 LICENSE
-rwxr-xr-x 1 root   1912 мар 19  2016 mkdist
drwxr-xr-x 2 root   4096 мар 19  2016 @Old
-rw-r--r-- 1 root   2663 мар 19  2016 README-8.6
-rw-r--r-- 1 root   1087 мар 19  2016 README-Freewrap
-rw-r--r-- 1 root    862 мар 19  2016 README.md
-rw-r--r-- 1 root   1678 мар 19  2016 README-Pragana
drwxr-xr-x 2 root   4096 мар 19  2016 sample
-rw-r--r-- 1 root  18873 мар 19  2016 ToDos.odt
-rw-r--r-- 1 root 135572 мар 19  2016 ToDos.pdf
-rwxr-xr-x 1 root    312 мар 19  2016 vtcl
-rw-r--r-- 1 root    220 мар 19  2016 vtcl.desktop
-rw-r--r-- 1 root     43 мар 19  2016 vtclmac
-rw-r--r-- 1 root   1895 мар 19  2016 vtcl.spec
-rw-r--r-- 1 root   1895 мар 19  2016 vtcl.spec-save
-rwxr-xr-x 1 root  21607 мар 19  2016 vtcl.tcl
-rwxr-xr-x 1 root  21362 мар 19  2016 vtcl.tcl-orig
edit "vtcl" shell script Change PATH_TO_WISH to the location of the wish binary Change VTCL_HOME to the directory from last step.

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

olej@R420:/$ which wish
/usr/bin/wish

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

root@R420:/opt/vtcl# grep -v ^# /opt/vtcl/vtcl

PATH_TO_WISH=/usr/bin/wish

VTCL_HOME=/opt/vtcl

export PATH_TO_WISH
export VTCL_HOME

exec ${PATH_TO_WISH} ${VTCL_HOME}/vtcl.tcl $*
Put vtcl in your path (/usr/local/bin or /usr/bin) or change your path to include $(VTCL_HOME)

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

olej@R420:~$ which vtcl
/opt/vtcl/vtcl
Olej писал(а):
03 мар 2024, 10:05
Это вот первая такая "пара" пригодная для создания Go GUI: Glade для генерации форм + GTK+3 + пакет "github.com/gotk3/gotk3/gtk" как интерфейс к коду Go ...
А это вот такая вторая "пара": Visual Tcl для генерации форм + Tcl/Tk как графический фреймворк + импорт "github.com/johnnylee/go-tk/gotk" как интерфейс из Go к библиотекам Tcl/Tk

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

Go: GUI

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

Olej писал(а):
03 мар 2024, 14:05
Visual Tcl для генерации форм

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

olej@R420:~$ vtcl --help
can't find package Tix
В принципе, Vtcl GUI при этом стартует ... но я такого не люблю :lol:

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

olej@R420:~/2024/Go/GUI/Tcl.Tk$ aptitude search tix
p   elastix                                                                      - toolbox for rigid and nonrigid registration of images                                  
p   elastix-doc                                                                  - toolbox for rigid and nonrigid registration of images - docs                           
p   fonts-stix                                                                   - научные шрифты                                                                         
p   golang-github-cryptix-wav-dev                                                - Golang .wav reader and writer (development file)                                       
i   hypnotix                                                                     - IPTV Player                                                                            
v   librust-actix-derive+default-dev                                             -                                                                                        
v   librust-actix-derive-0+default-dev                                           -                                                                                        
v   librust-actix-derive-0-dev                                                   -                                                                                        
v   librust-actix-derive-0.5+default-dev                                         -                                                                                        
v   librust-actix-derive-0.5-dev                                                 -                                                                                        
v   librust-actix-derive-0.5.0+default-dev                                       -                                                                                        
v   librust-actix-derive-0.5.0-dev                                               -                                                                                        
p   librust-actix-derive-dev                                                     - Actor framework for Rust - Rust source code                                            
v   otf-stix                                                                     -                                                                                        
p   r-cran-rstatix                                                               - Pipe-Friendly Framework for Basic Statistical Tests                                    
p   rotix                                                                        - generate rotational obfuscations                                                       
p   tix                                                                          - library for Tk -- runtime package                                                      
p   tix-dev                                                                      - library for Tk -- development package                                                  

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

olej@R420:~/2024/Go/GUI/Tcl.Tk$ sudo apt install tix tix-dev
[sudo] пароль для olej:       
Чтение списков пакетов… Готово
Построение дерева зависимостей… Готово
Чтение информации о состоянии… Готово         
Следующие НОВЫЕ пакеты будут установлены:
  tix tix-dev
Обновлено 0 пакетов, установлено 2 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 811 kB архивов.
После данной операции объём занятого дискового пространства возрастёт на 2.563 kB.
Пол:1 http://ubuntu.volia.net/ubuntu-archive jammy/universe amd64 tix amd64 8.4.3-11 [289 kB]
Пол:2 http://ubuntu.volia.net/ubuntu-archive jammy/universe amd64 tix-dev amd64 8.4.3-11 [522 kB]
Получено 811 kB за 1с (923 kB/s) 
Выбор ранее не выбранного пакета tix.
(Чтение базы данных … на данный момент установлено 595203 файла и каталога.)
Подготовка к распаковке …/tix_8.4.3-11_amd64.deb …
Распаковывается tix (8.4.3-11) …
Выбор ранее не выбранного пакета tix-dev.
Подготовка к распаковке …/tix-dev_8.4.3-11_amd64.deb …
Распаковывается tix-dev (8.4.3-11) …
Настраивается пакет tix (8.4.3-11) …
Настраивается пакет tix-dev (8.4.3-11) …
Обрабатываются триггеры для man-db (2.10.2-1) …
Обрабатываются триггеры для libc-bin (2.35-0ubuntu3.6) …

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

Go: GUI

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

Olej писал(а):
03 мар 2024, 15:13
В принципе, Vtcl GUI при этом стартует ... но я такого не люблю
Вот теперь старт совсем чистый:

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

olej@R420:~/2024/Go/GUI/Tcl.Tk$ vtcl
...
Вложения
Снимок экрана от 2024-03-03 14-10-03.png
Снимок экрана от 2024-03-03 14-10-03.png (15.71 КБ) 110 просмотров
Снимок экрана от 2024-03-03 14-10-15.png
Снимок экрана от 2024-03-03 14-10-15.png (68.24 КБ) 110 просмотров
Снимок экрана от 2024-03-03 14-10-23.png
Снимок экрана от 2024-03-03 14-10-23.png (45.4 КБ) 110 просмотров

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

Go: GUI

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

Olej писал(а):
03 мар 2024, 10:05
Это вот первая такая "пара" пригодная для создания Go GUI: Glade для генерации форм + GTK+3 + пакет "github.com/gotk3/gotk3/gtk" как интерфейс к коду Go ...
Olej писал(а):
03 мар 2024, 14:05
А это вот такая вторая "пара": Visual Tcl для генерации форм + Tcl/Tk как графический фреймворк + импорт "github.com/johnnylee/go-tk/gotk" как интерфейс из Go к библиотекам Tcl/Tk
И, наконец, 3-й интерфейс - это интерфейс к библиотекам Qt ...
Создание приложений на Golang с использованием UI-фреймворка Qt
Опубликовано 24.11.2023
Обновлено 24.11.2023
Но по таким описаниям описывать вид GUI "вслепую" ... да пусть оно горит ярким пламенем :oops:
Представляется годной вот такая связка:
- инструсентами Qt создаётся описание GUI на QML...
- после чего из Go кода импортируется поддержка QML...
- и дальше активность GUI обслуживается кодом Go
Вот пример, но он очень старый ... только как прототип!
Редактор на Go и QML
2014-04-14

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

...
    qml.Init(nil)
    engine := qml.NewEngine()
    component, err := engine.LoadFile("Example.qml")
...

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

Go: GUI

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

Olej писал(а):
03 мар 2024, 21:38
инструсентами Qt создаётся описание GUI на QML
Для создания проекта с использованием QML и Qt Quick можно использовать Qt Creator.
В Qt Creator есть встроенные типы проекта для создания приложений с использованием Qt Quick:
1. Qt Quick Application.
2. Qt Quick Application (compat).
Первый шаблон при создании проекта добавляет некоторую базовую функциональность, а второй шаблон определяет лишь пустое окно.
Основые элементы проекта:
CMakeLists.txt — скрипт сборки проекта с помощью CMake.
main.cpp — исходный код приложения на языке С++ с функцией main.
Main.qml — файл на языке QML, который описывает графический интерфейс.
Как-то так...

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

Go: GUI

Непрочитанное сообщение Olej » 04 мар 2024, 00:06

Olej писал(а):
03 мар 2024, 21:38
- после чего из Go кода импортируется поддержка QML...
А со времён упоминаемой выше публикации, контексный поиск по пакетам Golang, по контексту qml : https://pkg.go.dev/search?q=qml&m= даёт ... 23 пакета, реализующих интерфейс из Go к QML.
Правда ... большинство из них относится к годам 2013, 2014, 2015, 2019 ...
Тот же https://pkg.go.dev/gopkg.in/qml.v1
This package is in an alpha stage, and still in heavy development. APIs may change, and things may break.
Круто :!: С 2015 года он находится в "суровом развитии" ... уже 10 лет :roll:
The following logic demonstrates loading a QML file into a window:

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

func main() {
        err := qml.Run(run)
        ...
}

func run() error {
        engine := qml.NewEngine()
        component, err := engine.LoadFile("file.qml")
        if err != nil {
                return err
        }
        win := component.CreateWindow(nil)
        win.Show()
        win.Wait()
        return nil
}
Потом мода на QML прошла :?:
Как-то не очень весело оно всё.

Ответить

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

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

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