Форум по операционной системе GNU/Linux и свободному программному обеспечению
Текущее время: 20 апр 2019, 07:18

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: Python - графика
Непрочитанное сообщениеДобавлено: 03 фев 2019, 02:13 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11699
Откуда: Харьков
Olej писал(а):
Вот рекомендуют для этого: Rapyd-Tk

Следующий, рекомендуемый и довольно свеже развиваемый, GUI конструктор - pygubu:
GIT репозиторий: https://github.com/alejandroautalan/pygubu
Код:
olej@ACER:~/2019_WORK/own.WORK/python/1$ git clone https://github.com/alejandroautalan/pygubu
Клонирование в «pygubu»…
remote: Enumerating objects: 3067, done.
remote: Total 3067 (delta 0), reused 0 (delta 0), pack-reused 3067
Получение объектов: 100% (3067/3067), 1.66 MiB | 2.43 MiB/s, готово.
Определение изменений: 100% (2038/2038), готово.

olej@ACER:~/2019_WORK/own.WORK/python/1$ ls -l
итого 4
drwxr-xr-x 10 olej olej 4096 фев  3 00:38 pygubu

olej@ACER:~/2019_WORK/own.WORK/python$ du -hs pygubu
5,4M   pygubu

Там уже в каталоге можем проверить работоспособность (до установки):
Код:
olej@ACER:~/2019_WORK/own.WORK/python/pygubu$ ./runtests.sh
 =============
 Default Python 3: /usr/bin/python3
 version: Python 3.7.2
 tk version :8.6
..................................................................................
----------------------------------------------------------------------
Ran 82 tests in 7.576s

OK
 =============
 Default Python 2: /usr/bin/python
Python 2.7.15+
 version:
 tk version :8.6
..................................................................................
----------------------------------------------------------------------
Ran 82 tests in 7.780s

OK

=============
 Python 3.3.2 (custom build)
 tk 8.6 (debian package)
./runtests.sh: 25: ./runtests.sh: cpython3.3.2: not found

=============
 Python 3.4.0 (custom build)
 tk 8.6 (debian package)
./runtests.sh: 33: ./runtests.sh: cpython3.4: not found


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Python - графика
Непрочитанное сообщениеДобавлено: 03 фев 2019, 02:16 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11699
Откуда: Харьков
Olej писал(а):
Там уже в каталоге можем проверить работоспособность (до установки):

Установка достаточно традиционным для Python способом (под Python 2 можно просто установить через pip):
Код:
olej@ACER:~/2019_WORK/own.WORK/python/pygubu$ time sudo python3 setup.py install
[sudo] пароль для olej:
running install
running build
running build_py
creating build
creating build/lib
creating build/lib/pygubu
copying pygubu/stockimage.py -> build/lib/pygubu
copying pygubu/testui.py -> build/lib/pygubu
copying pygubu/__init__.py -> build/lib/pygubu
copying pygubu/binding.py -> build/lib/pygubu
copying pygubu/ui2code.py -> build/lib/pygubu
creating build/lib/pygubu/builder
...
running install_scripts
Installing pygubu-designer script to /usr/local/bin

real   0m3,963s
user   0m0,418s
sys   0m0,080s

Код:
olej@ACER:~/2019_WORK/own.WORK/python/pygubu$ which pygubu-designer
/usr/local/bin/pygubu-designer


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Python - графика
Непрочитанное сообщениеДобавлено: 03 фев 2019, 02:20 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11699
Откуда: Харьков
Olej писал(а):
Код:
olej@ACER:~/2019_WORK/own.WORK/python/pygubu$ which pygubu-designer
/usr/local/bin/pygubu-designer

Запуск:
Код:
olej@ACER:~/2019_WORK/own.WORK/python/pygubu$ pygubu-designer
Traceback (most recent call last):
  File "/usr/local/bin/pygubu-designer", line 6, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 3126, in <module>
    @_call_aside
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 3110, in _call_aside
    f(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 3139, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 581, in _build_master
    ws.require(__requires__)
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 898, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 784, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'appdirs>=1.3' distribution was not found and is required by pygubu

И облом... :-(
Но, как оказалось, этому делу легко помочь:
Код:
olej@ACER:~/2019_WORK/own.WORK/python/pygubu$ sudo python3 -m pip install appdirs
Collecting appdirs
  Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f5a56098390>: Failed to establish a new connection: [Errno -2] Неизвестное имя или служба')': /simple/appdirs/
  Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f5a560982b0>: Failed to establish a new connection: [Errno -2] Неизвестное имя или служба')': /simple/appdirs/
  Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f5a56098208>: Failed to establish a new connection: [Errno -2] Неизвестное имя или служба')': /simple/appdirs/
  Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f5a56098fd0>: Failed to establish a new connection: [Errno -2] Неизвестное имя или служба')': /simple/appdirs/
  Downloading https://files.pythonhosted.org/packages/56/eb/810e700ed1349edde4cbdc1b2a21e28cdf115f9faf263f6bbf8447c1abf3/appdirs-1.4.3-py2.py3-none-any.whl
Installing collected packages: appdirs
Successfully installed appdirs-1.4.3

Запуск:
Код:
olej@ACER:~/2019_WORK/own.WORK/python/pygubu$ pygubu-designer
python version: 3.7.2 on linux
pygubu version: 0.9.8.2
...

Вот такой вот дизайнер ... - это кандидат №2.


Вложения:
p1.png
p1.png [ 35.94 КБ | Просмотров: 232 ]
Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Python - графика
Непрочитанное сообщениеДобавлено: 03 фев 2019, 02:31 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11699
Откуда: Харьков
Olej писал(а):
Вот такой вот дизайнер ... - это кандидат №2.

Логика такого дизайнера такая:
- построив UI сохраняем его как XML файл ... в экзамплах они приводят helloworld.ui ...
- а потом он используется в коде, как пример приводится:
Код:
try:
    import tkinter as tk  # for python 3
except:
    import Tkinter as tk  # for python 2
import pygubu


class Application:
    def __init__(self, master):

        #1: Create a builder
        self.builder = builder = pygubu.Builder()

        #2: Load an ui file
        builder.add_from_file('helloworld.ui')

        #3: Create the widget using a master as parent
        self.mainwindow = builder.get_object('mainwindow', master)

if __name__ == '__main__':
    root = tk.Tk()
    app = Application(root)
    root.mainloop()

Здесь принципиально важно:
Код:
builder.add_from_file('helloworld.ui')

Здесь вот есть достаточно обстоятельное wiki-описание использования всей этой техники - Home:
Цитата:
sigoa edited this page on 25 Dec 2017 · 24 revisions
Pygubu really shines as the GUI builder in a python RAD IDE, such as based on LiClipse (which includes git and debug GUIs, plus lint/pep tooling if so desired). Though some manual text editing remains.

Обращаем внимание на дату последней ревизии - месяц назад!


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Python - графика
Непрочитанное сообщениеДобавлено: 03 фев 2019, 02:36 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11699
Откуда: Харьков
3-й кандидат - PAGE - Python Automatic GUI Generator - Version 4.20
Цитата:
PAGE is a cross-platform drag-and-drop GUI generator, bearing a resemblance to Visual Basic. It allows one to easily create GUI windows containing a selection of Tk and ttk widgets. Required are Tcl/Tk 8.6 and Python 2.7+. I am actually using Tcl/Tk 8.6 and Python 2.7. PAGE springs from Virtual Tcl, a Tcl/Tk program, forked to generate Python modules that realize the desired GUI. Tcl is required for running PAGE but is not required for executing the generated Python code.

PAGE is not an end-all, be-all tool, but rather one that attempts to ease the burden on the Python programmer. It is aimed at the user who will put up with a less than completely general GUI capability in order to get an easily generated GUI. A helper and learning tool, it does not build an entire application but rather is aimed at building a single GUI class and the boiler plate code in Python necessary for getting the GUI on the screen.

Цитата:
Systems Supported
Currently PAGE and the resulting GUI windows have been tested on Linux running Python 2.7, and 3.5 running on Linux, on Win32 and Windows 10, OSX, and Raspbian.

Качаем отсюда: https://sourceforge.net/projects/page/files/latest/download
Цитата:
Last Update: 2019-01-17

Цитата:
Additional Project Details
Languages
French, English
Intended Audience
Developers, End Users/Desktop
User Interface
X Window System (X11), Qt
Programming Language
Python, C++
Registered
2000-12-22

Код:
olej@ACER:~/Загрузки$ ls -l page-4.20.tgz
-rw-r--r-- 1 olej olej 12697456 фев  3 01:36 page-4.20.tgz


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Python - графика
Непрочитанное сообщениеДобавлено: 03 фев 2019, 02:50 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11699
Откуда: Харьков
Olej писал(а):
3-й кандидат - PAGE - Python Automatic GUI Generator - Version 4.20
Код:
olej@ACER:~/Загрузки$ ls -l page-4.20.tgz
-rw-r--r-- 1 olej olej 12697456 фев  3 01:36 page-4.20.tgz


После разархивирования (в $HOME):
Код:
olej@ACER:~/page$ ls -l
итого 80
-rwxr-xr-x  1 olej olej  1522 янв 17 00:52 configure
drwxr-xr-x  5 olej olej  4096 ноя 22 19:00 docs
drwxr-xr-x 20 olej olej  4096 янв 16 18:01 examples
drwxr-xr-x 15 olej olej  4096 окт  5  2016 examples-3
drwxr-xr-x  3 olej olej  4096 окт 20 18:04 images
drwxr-xr-x  7 olej olej  4096 янв 17 00:52 lib
-rwxr-xr-x  1 olej olej   169 янв 17 00:52 page
drwxr-xr-x  2 olej olej  4096 сен  9  2016 page-icons
-rwxr-xr-x  1 olej olej 29212 янв 17 00:52 page.tcl
-rwxr-xr-x  1 olej olej  3078 янв 17 00:52 release
-rw-r--r--  1 olej olej    23 янв 17 00:52 version
drwxr-xr-x  2 olej olej  4096 янв 28  2017 WIN_INSTALL
-rw-r--r--  1 olej olej   236 янв 17 00:52 WRITE.BAT

Код:
olej@ACER:~$ du -hs page
21M   page

Там в составе полнейший комплект документации в разных форматах...


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Python - графика
Непрочитанное сообщениеДобавлено: 03 фев 2019, 03:10 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11699
Откуда: Харьков
Olej писал(а):
После разархивирования (в $HOME):
Код:
olej@ACER:~/page$ ls -l
итого 80
-rwxr-xr-x  1 olej olej  1522 янв 17 00:52 configure
drwxr-xr-x  5 olej olej  4096 ноя 22 19:00 docs
drwxr-xr-x 20 olej olej  4096 янв 16 18:01 examples
drwxr-xr-x 15 olej olej  4096 окт  5  2016 examples-3
drwxr-xr-x  3 olej olej  4096 окт 20 18:04 images
drwxr-xr-x  7 olej olej  4096 янв 17 00:52 lib
-rwxr-xr-x  1 olej olej   169 янв 17 00:52 page
drwxr-xr-x  2 olej olej  4096 сен  9  2016 page-icons
-rwxr-xr-x  1 olej olej 29212 янв 17 00:52 page.tcl
-rwxr-xr-x  1 olej olej  3078 янв 17 00:52 release
-rw-r--r--  1 olej olej    23 янв 17 00:52 version
drwxr-xr-x  2 olej olej  4096 янв 28  2017 WIN_INSTALL
-rw-r--r--  1 olej olej   236 янв 17 00:52 WRITE.BAT


Запуск:
Код:
olej@ACER:~/page$ ./page
./page: 9: exec: /opt/ActiveTcl-8.6/bin/wish8.6: not found

Облом... ;-)
Только потому, что его нужно предварительно сконфигурировать на используемую реализацию Tcl/Tk:
Код:
olej@ACER:~/page$ time ./configure
Configuring page

Using /usr/bin/wish8.6

#-------- Generated page --------------#
#!/bin/sh

PATH_TO_WISH=/usr/bin/wish8.6
PAGE_HOME=/home/olej/page

export PATH_TO_WISH
export PAGE_HOME

exec ${PATH_TO_WISH} ${PAGE_HOME}/page.tcl "$*"
#-------- End of page -----------------#

real   0m0,016s
user   0m0,004s
sys   0m0,005s

Запуск:
Код:
olej@ACER:~/page$ ./page
...


Вложения:
p1.png
p1.png [ 7.17 КБ | Просмотров: 232 ]
p2.png
p2.png [ 26.15 КБ | Просмотров: 232 ]
p3.png
p3.png [ 8.02 КБ | Просмотров: 232 ]
p4.png
p4.png [ 31.35 КБ | Просмотров: 232 ]
p5.png
p5.png [ 5.44 КБ | Просмотров: 232 ]
Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Python - графика
Непрочитанное сообщениеДобавлено: 03 фев 2019, 19:10 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11699
Откуда: Харьков
Olej писал(а):
Логика такого дизайнера такая:
- построив UI сохраняем его как XML файл ... в экзамплах они приводят helloworld.ui ...
- а потом он используется в коде, как пример приводится:

Леплю такое вот условное приложение, похожее на то, что мне нужно:
Вложение:
p10.png
p10.png [ 70.06 КБ | Просмотров: 201 ]

Код:
olej@ACER:~/2019_WORK/own.WORK/python$ ls -l xlock.*
-rwxr-xr-x 1 olej olej 1008 фев  3 17:50 xlock.py
-rw-r--r-- 1 olej olej 4362 фев  3 17:46 xlock.ui

olej@ACER:~/2019_WORK/own.WORK/python$ file xlock.ui
xlock.ui: XML 1.0 document text

- xlock.ui - это то, что сгенерировал pygubu - XML описание структуры UI;
- xlock.py - это то, что я написал для использования этого UI:
Код:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import tkinter as tk 
import pygubu

class Application:
    def __init__(self, master):

        #1: Create a builder
        self.builder = builder = pygubu.Builder()

        #2: Load an ui file
        builder.add_from_file( 'xlock.ui' )

        #3: Create the widget using a master as parent
        self.mainwindow = builder.get_object( 'Frame_1', master )

if __name__ == '__main__':
    root = tk.Tk()
    app = Application(root)
    root.mainloop()

Запуск:
Код:
olej@ACER:~/2019_WORK/own.WORK/python$ ./xlock.py
ERROR:pygubu.builder.builderobject:Failed to set property 'container' on class '<class 'tkinter.Frame'>'. TclError: can't modify -container option after widget is created

Вложение:
p11.png
p11.png [ 9.54 КБ | Просмотров: 201 ]

Оно сырое, горбатое, но это минимально необходимо и достаточно, для того что нужно! : есть дерево виджетов, их имена, и класс приложения, который нужно только расширять.

P.S. Обратите внимание на картинку дизайнера - он использует компоновщик grid а не pack Tk, что тоже то, что хотелось.


Вложения:
xlock.py [504 байт]
Скачиваний: 6
Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Python - графика
Непрочитанное сообщениеДобавлено: 03 фев 2019, 21:28 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11699
Откуда: Харьков
Olej писал(а):

Без всяких фокусов, не задумываясь о компоновке и флагах, размещаю виджеты на панели шаблона:
Вложение:
p10.png
p10.png [ 7.87 КБ | Просмотров: 200 ]


Вложение:
p11.png
p11.png [ 15.46 КБ | Просмотров: 200 ]


В меню, сохранив проект, дав ему имя, нужно сгенерировать 2 .py файла:
Вложение:
p15.png
p15.png [ 13 КБ | Просмотров: 200 ]

- Generate Python GUI
- Generate Support Module (на картинке обрезан)
Код:
olej@ACER:~/2019_WORK/own.WORK/python$ ls xlock_page*.*
xlock_page.py  xlock_page_support.py  xlock_page_support.pyc  xlock_page.tcl

<xlock_page> - это "имя проекта".
Запуск:
Код:
olej@ACER:~/2019_WORK/own.WORK/python$ python3 xlock_page.py

И получаем:
Вложение:
p13.png
p13.png [ 7.93 КБ | Просмотров: 200 ]


Вложения:
xlock_page.py [2.58 КБ]
Скачиваний: 7
xlock_page_support.py [706 байт]
Скачиваний: 9
Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Python - графика
Непрочитанное сообщениеДобавлено: 27 фев 2019, 12:38 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11699
Откуда: Харьков
Olej писал(а):
Опыт использования связки Python/Tkinter оказывается очень продуктивным! (я ещё по свободе выложу несколько исходников).
Единственное что - чудовищно тоскливое занятие расписывать эти виджеты вручную, без какого-то визуального GUI компоновщика, расставляющего виджеты и готовящего шаблон приложения.

Ещё раз возвращаюсь к визуальным графическим построителям под Tkinter, теперь уже не "на попробовать", а под реальный небольшой проект.
Потому что, при достоинствах в коде, Tkinter - компоновать под него виджеты, пользуясь вручную их 3-мя "менеджерами компоновки" ( pack(), grid(), place() ) - это сильно тоскливое занятие.


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 3 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
[ Time : 0.407s | 20 Queries | GZIP : On ]