Rating@Mail.ru

Форум по операционной системе GNU/Linux и свободному программному обеспечению


Текущее время: 23 фев 2018, 21:32

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




Начать новую тему Ответить на тему  [ Сообщений: 42 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Python - графика
Непрочитанное сообщениеДобавлено: 26 авг 2013, 10:14 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10541
Откуда: Харьков
Эта тема - о графических приложениях на Python, построению GUI.
А заодно (пока и если такой материал не переполнит тему) о сопутствующих GUI вещах: мультимедиа и т.п.

Тема сюда "переползла" вот отсюда:
Цитата:
Есть и ещё одна тема, заслуживающая совершенно отдельной темы рассмотрения: Python и графика, Python и создание GUI приложений...
Но это уже на потом, на десерт ...


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

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10541
Откуда: Харьков
Olej писал(а):
Цитата:
Есть и ещё одна тема, заслуживающая совершенно отдельной темы рассмотрения: Python и графика, Python и создание GUI приложений...
Но это уже на потом, на десерт ...



Я сейчас прямо не буду развивать эту тему - как и было сказано: "на десерт" ... по свободному времени...
Но, может, кого раньше заинтересует эта тема, так для этого я ... превентивно ;-) перечислю 3 (пока) совершенно разных направления GUI, которые могут быть интересны для экспериментирования:

1. модуль Tkinter для простого и быстрого написания GUI-приложений.
Подробнейшее описание использования с примерами есть в уже упоминавшейся книге Марк Лутц - Программирование на Python. Том 1, 4-е издание (по этой ссылке её можно свободно скачать):
Изображение
В этом томе книги целая здоровенная часть (>400 стр.) посвящена Tkinter:
Цитата:
III
Программирование
графических интерфейсов

Описание Tkinter есть в WWW-интерфейсе pydoc: http://localhost:8080/Tkinter.html

2. модуль pygame.
Это основа того учебного курса ИНТУИТ, который я уже упоминал:
Olej писал(а):
вечером приходит уведомление о свежем курсе ИНТУИТ:
...
P.S. Этот курс был анонсирован и раньше, но на месте его ссылки было пустое место, и писалось "... готовится ...".

P.P.S.
Изображение
Мне не сильно понятно, почему курсы университета, который подписывается как "национальный" должны быть на английском языке? ;-) ... Но это не так важно...


3. инструментарий PyQt - интерфейс Python к библиотекам Qt.
Этого инструментария достаточно много в репозитариях дистрибутивов Linux:
Код:
bash-4.2$ yum list all *PyQt*
...
Установленные пакеты
PyQt4.i686                                             4.10.1-4.fc17                                   @updates
Доступные пакеты
PyQt.i686                                              3.18.1-14.fc17                                  updates
PyQt-devel.i686                                        3.18.1-14.fc17                                  updates
PyQt-examples.i686                                     3.18.1-14.fc17                                  updates
PyQt4-assistant.i686                                   4.10.1-4.fc17                                   updates
PyQt4-devel.i686                                       4.10.1-4.fc17                                   updates
plplot-pyqt.i686                                       5.9.9-7.svn12202.fc17                           updates
pyqtrailer.noarch                                      0.6.2-3.fc17                                    fedora 
python3-PyQt4.i686                                     4.10.1-4.fc17                                   updates
python3-PyQt4-assistant.i686                           4.10.1-4.fc17                                   updates
python3-PyQt4-devel.i686                               4.10.1-4.fc17                                   updates


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

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10541
Откуда: Харьков
Olej писал(а):
1. модуль Tkinter для простого и быстрого написания GUI-приложений.
Подробнейшее описание использования с примерами есть в уже упоминавшейся книге Марк Лутц - Программирование на Python. Том 1, 4-е издание (по этой ссылке её можно свободно скачать):
Изображение
В этом томе книги целая здоровенная часть (>400 стр.) посвящена Tkinter:
Цитата:
III
Программирование
графических интерфейсов

Описание Tkinter есть в WWW-интерфейсе pydoc: http://localhost:8080/Tkinter.html


В отношении Tkinter только замечу вот что:

- в книге Марк Лутц приводится действительно сильная аргументация почему GUI целесообразно делать именно на интерпретирующем Python:
Цитата:
Кроме того, краткость цикла разработки в Python позволяет программистам быстро экспериментировать с вариантами расположения элементов и их поведением, что невозможно при использовании обычных технологий разработки. На практике обычно можно за считаные секунды сделать изменения в GUI, созданном на Python, и посмотреть на их результат. Не пытайтесь добиться такой же скорости на C или C++ !

P.S. Это цитата (копированием) из изданной книги. Неужели редактор-корректор издательства "Символ-Плюс" просмотрели неправильное написание, которое должно быть: считанные?

- везде по книге Марк Лутц использует (в примерах кода!) вот такое написание tkinter:
Код:
from tkinter import *


- но если вы запустите такой пример, то получите отлуп ;-) :
Код:
bash-4.2$ python hw.py
Traceback (most recent call last):
  File "hw.py", line 1, in <module>
    from tkinter import *
ImportError: No module named tkinter


- правильно его пример нужно бы переписать так (написание Tkinter):
Код:
from Tkinter import *

tk = Tk()
tk.title("Hello World!")
tk.geometry('300x40')
def button_clicked():
    print("Hello World!")

button=Button(tk,text="Press Me",command=button_clicked)
button.pack(fill=BOTH)

tk.mainloop()

Вложение:
hw.png
hw.png [ 5.1 КБ | Просмотров: 8626 ]


- я так понимаю, что Марк Лутц отрабатывает свои примеры в Windows, а Windows - он тупой, и большие-малые буквы никогда не различал, ему "что в лоб, что по лбу" ;-)

Вот теперь можете экспериментировать.


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

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10541
Откуда: Харьков
Olej писал(а):
2. модуль pygame.
Это основа того учебного курса ИНТУИТ, который я уже упоминал:
Olej писал(а):
...
P.P.S.
Изображение
Мне не сильно понятно, почему курсы университета, который подписывается как "национальный" должны быть на английском языке? ;-) ... Но это не так важно...



1. Теперь мне уже понятно почему ;-) :
- автор иностранный: Albert Sweigart
- это не столько учебный курс "ИНТУИТ" ("слухи сильно преувеличены" ;-) ), сколько вольный пересказ одной из оригинальных книг этого автора, которая, естественно, англоязычная - "Making Games with Python & Pygames":
Изображение
- все 3 книги автора можно посмотреть здесь ... которые, кстати, можно там онлайн читать, или оттуда свободно скачать (.pdf или .mobi для читалки Amazon Kindle 4), что и следует, по правде, немедленно сделать ;-) - это лучше, чем пересказки на "ИНТУИТ" читать ;-)
- там же и архив исходных кодов для скачивания...
- ещё один сайт автора, который он указывает для скачивания примеров: http://invpy.com/downloads/ - не исключено, что они отличаются от сайта книг, так бывает :-?

P.S. Там же по ссылке и ещё одна книга автора в тему - "Invent You Own Computer Games with Python" ( как обещано в аннотации: with Pygames tutorial).
Изображение

2. Автор, судя по всему, большой дока в Python. Но, так же судя по всему, он совсем не настолько силён в операционных системах, их разнообразии и инсталляциях... ;-)
Он описывает использование Python-модуля pygame как данность. И, почти наверняка, в инсталляции Python для Windows это так и есть. Но в Linux запуск примеров сразу завершится примерно так:
Код:
bash-4.2$ python hw.py
Traceback (most recent call last):
  File "hw.py", line 1, in <module>
    import pygame, sys
ImportError: No module named pygame

Это потому, что в Linux модуль pygame нужно устанавливать дополнительно (из репозитария вашего дистрибутива Linux):
Код:
bash-4.2$ yum list pygame*
...
Доступные пакеты
pygame.i686                                           1.9.1-11.fc17                                     updates
pygame-devel.i686                                     1.9.1-11.fc17                                     updates

bash-4.2$ sudo yum install pygame*
...
ависимости определены

===============================================================================================================
 Package                           Архитектура        Версия                         Репозиторий         Размер
===============================================================================================================
Установка:
 pygame                            i686               1.9.1-11.fc17                  updates             2.1 M
 pygame-devel                      i686               1.9.1-11.fc17                  updates             752 k
Установка зависимостей:
 SDL-devel                         i686               1.2.14-17.fc17                 updates             352 k
 SDL_mixer-devel                   i686               1.2.12-3.fc17                  updates              19 k
 SDL_ttf-devel                     i686               2.0.11-1.fc17                  fedora              9.3 k
 alsa-lib-devel                    i686               1.0.26-1.fc17                  updates             797 k
 gnu-free-fonts-common             noarch             20100919-5.fc17                fedora              186 k
 gnu-free-sans-fonts               noarch             20100919-5.fc17                fedora              597 k
 libogg-devel                      i686               2:1.3.0-5.fc17                 updates              13 k
 libvorbis-devel                   i686               1:1.3.3-1.fc17                 fedora               20 k
 portmidi                          i686               217-6.fc17                     updates              24 k
Обновление зависимостей:
 SDL                               i686               1.2.14-17.fc17                 updates             206 k
 alsa-lib                          i686               1.0.26-1.fc17                  updates             362 k
 libogg                            i686               2:1.3.0-5.fc17                 updates              23 k

Результат операции
===============================================================================================================
Установка   2 Пакета (+9 Зависимые пакеты)
Обновление           ( 3 Зависимых пакета)

Объем загрузки: 5.4 M
Продолжить? [y/N]: y
...
Установлено:
  pygame.i686 0:1.9.1-11.fc17                         pygame-devel.i686 0:1.9.1-11.fc17

Как видите, пакет по зависимостям тянет достаточно много за собой.

3. Вот теперь можете экспериментировать с его примерами:
Код:
import pygame, sys
from pygame.locals import *

pygame.init()
DISPLAYSURF = pygame.display.set_mode((400, 300))
pygame.display.set_caption('Hello World!')

while True: # main game loop
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
    pygame.display.update()

Вложение:
hw.png
hw.png [ 4.8 КБ | Просмотров: 8626 ]


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

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


Картина ещё более путанная - всё было ОК, пока Python был 2, но для Python 3:
Код:
bash-4.2$ python3 hw.py
Traceback (most recent call last):
  File "hw.py", line 1, in <module>
    from Tkinter import *
ImportError: No module named Tkinter


Возможно (зависит от дистрибутива Linux?) нужно будет установить пакет дополнительно:
Код:
bash-4.2$ sudo yum install python3-tkinter.i686
...
Установлено:
  python3-tkinter.i686 0:3.2.3-7.fc17
 
Выполнено!
New leaves:
  python3-tkinter.i686


Но и после этого будет возникать ошибка, пока не измените код примера на исходный (теперь уже должно стать написание: tkinter) :-o :
Код:
from tkinter import *

tk = Tk()
tk.title("Hello World!")
tk.geometry('300x40')
def button_clicked():
    print("Hello World!")

button=Button(tk,text="Press Me",command=button_clicked)
button.pack(fill=BOTH)

tk.mainloop()

Код:
bash-4.2$ python3 hw.py
...


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

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10541
Откуда: Харьков
Olej писал(а):
Подробнейшее описание использования с примерами есть в уже упоминавшейся книге Марк Лутц - Программирование на Python. Том 1, 4-е издание (по этой ссылке её можно свободно скачать):
Изображение


В этой же книге содержится широкий обзор (но только обзор по верхам!) других интерфейсов из Python и инструментов построения GUI, из которых (сверх названных выше 3-х) не менее интересными чем PyQt могут быть:

4. wxPython
Цитата:
Интерфейс Python к биб­ иотеке wxWidgets с открытыми исходными текстами (ранее называвшейся wxWindows), которая представляет собой переносимую структуру классов GUI, первоначально созданную для использования из программ на языке C++. Система wxPython является модулем расширения, служащим оболочкой для классов wxWidgets. По общему мнению эта библиотека превосходно подходит для создания сложных интерфейсов и сегодня является, вероятно, вторым по популярности инструментом создания графических интерфейсов в Python после tkinter.


5. PyGTK
Цитата:
Интерфейс Python к GTK, переносимой биб­ иотеке GUI, первоначально использовавшейся как ядро оконной сис­ емы Gnome в Linux.
...
К моменту написания этих строк интерфейс PyGTK поддерживал возможность работы в Windows и в POSIX-совместимых системах, таких как Linux и Mac OS X (согласно документации, в настоящее время требуется, чтобы в Mac OS был установлен X-сервер, при этом разрабатывается версия для Mac).


P.S. Понятно, что все 5 (уже теперь) интерфейсов, перечисленные мной как "интересные" - все они независимые от платформы. Всякие специфические поделка a'la Windows-инструментария представлять интереса не могут.

P.P.S. Положительный результат использования любого из таких GUI-инструментариев должен был бы состоять в том, что GUI-приложение, перенесенное как файл из одной операционной системы в другую (Linux => Windows, Windows => Linux и др.) - должно работать так же без каких либо а). компиляций, б). настроек, в). игрищ с кодировками и локализациями. Вот это будет тогда высочайшая степень платформонезависимости, с трудом достигаемая до такого уровня в более привычных C/C++ или Java.


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

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10541
Откуда: Харьков
Olej писал(а):
Но и после этого будет возникать ошибка, пока не измените код примера на исходный (теперь уже должно стать написание: tkinter) :-o :


Документация:

- справочник классов An Introduction to Tkinter (Work in Progress)

- может пригодится The Python Imaging Library Handbook

- там же - это не графика, но огромный справочник по модулям Python 2, с примерами использования каждого модуля:
Цитата:
Based in part on over 3,000 newsgroup articles written by Python veteran Fredrik Lundh since 1995, this book provides brief descriptions and sample scripts for all standard modules in the Python 2.0 library.


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

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10541
Откуда: Харьков
Olej писал(а):
1. Теперь мне уже понятно почему ;-) :
- автор иностранный: Albert Sweigart
- это не столько учебный курс "ИНТУИТ" ("слухи сильно преувеличены" ;-) ), сколько вольный пересказ одной из оригинальных книг этого автора, которая, естественно, англоязычная - "Making Games with Python & Pygames":
Изображение
- все 3 книги автора можно посмотреть здесь ... которые, кстати, можно там онлайн читать, или оттуда свободно скачать (.pdf или .mobi для читалки Amazon Kindle 4), что и следует, по правде, немедленно сделать ;-) - это лучше, чем пересказки на "ИНТУИТ" читать ;-)
- там же и архив исходных кодов для скачивания...
- ещё один сайт автора, который он указывает для скачивания примеров: http://invpy.com/downloads/ - не исключено, что они отличаются от сайта книг, так бывает :-?


Книга очень приличная. Начал на досуге почитывать и просматривать примеры реализаций...
Очень подробное (до слишком подробное, до противного) изложение на 365 страницах, с детальным разбором каждого примера.
Исходных кодов примеров и сопутствующих им фалов почти на 2Mb:
Код:
bash-4.2$ du -hs makinggames_src
1,8M   makinggames_src

Это всё в плюс.

А в минус ... ?

1. Автор все свои опыты делал в Windows под IDLE.
Мне это неинтересно. Плюс, как всегда, в таких случаях все коды с этими противными Windows-ными ^M в конце строчки, можно бы и так оставить ... но я уже давно по привычке этого видеть не могу!
Как назло, в моём рабочем Linux не оказалось установленного трансформера текстов Windows=>Linux (давно не пользовался). Пришлось вспоминать и устанавливать:
Код:
bash-4.2$ sudo yum install dos2unix
...
Объем загрузки: 61 k
Объем изменений: 156 k
Продолжить? [y/N]: y
...
Установлено:
  dos2unix.i686 0:5.3.3-1.fc17

Если у вас не RPM-дистрибутив, то там, в Debian, например, будет такой же пакет с таким же именем...
Теперь можно первейшим шагом работы с примерами книги трансформировать их:
Код:
bash-4.2$ dos2unix drawing.py
dos2unix: converting file drawing.py to Unix format ...

Уже хорошо...

2. Автор пишет так:
Цитата:
However, the programs in this book work with both Python 2 and 3.
...
Ubuntu and Linux Instructions
Pygame for Linux also only supports Python 2, not Python 3.

Вот так вот... Нужно сходить на URL проекта Pygame и смотреть что там сейчас происходит, а не на момент написания книги.
Код:
bash-4.2$ python3 drawing.py
Traceback (most recent call last):
  File "drawing.py", line 1, in <module>
    import pygame, sys
ImportError: No module named pygame


Ну а в остальном примеры достаточно хорошо воспроизводимы:
Код:
bash-4.2$ python drawing.py
ALSA lib pcm_pulse.c:750:(pulse_prepare) PulseAudio: Unable to create stream: Too large
ALSA lib pcm_pulse.c:750:(pulse_prepare) PulseAudio: Unable to create stream: Too large
ALSA lib pcm_pulse.c:750:(pulse_prepare) PulseAudio: Unable to create stream: Too large

(но предполагаю, что здесь с звуковой подсистемой ещё придётся пободаться :-o )
Вложение:
drawing.png
drawing.png [ 6.2 КБ | Просмотров: 8543 ]


Вложения:
drawing.py [1.15 КБ]
Скачиваний: 430
Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Python - графика
Непрочитанное сообщениеДобавлено: 06 сен 2013, 21:23 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10541
Откуда: Харьков
Olej писал(а):
2. Автор пишет так:
Цитата:
However, the programs in this book work with both Python 2 and 3.
...
Ubuntu and Linux Instructions
Pygame for Linux also only supports Python 2, not Python 3.

Вот так вот... Нужно сходить на URL проекта Pygame и смотреть что там сейчас происходит, а не на момент написания книги.

Хождение показывает, что, скорее всего, так оно и есть - Downloads - последние редакции:
Цитата:
1.9.1 Packages (August 6th 2009)

Хотя страничка FrequentlyAskedQuestions даёт вот такое робкое разъяснение:
Цитата:
Does Pygame work with Python 3?
Mostly yes. Only the scrap, _movie, surfarray for Numeric, and threads modules have not been ported. The Pygame alternative, pgreloaded (Pygame Reloaded), also supports Python 3.

Для этого, нужно полагать, файлы пакета Pygame нужно вручную перенести в дерево пакетов Python 3, и получить в чём-то ограниченную функциональность...
Ну и там же указан URL pgreloaded на том же сайте, как альтернативу (pygame2):
Цитата:
Pygame Reloaded (aka pygame2, pgreloaded) is an ongoing rewrite of the Pygame multimedia and game framework.


Зато инсталляция под Python 2 очень и очень...
По выполнению команды (в том же FAQ подсмотрел ;-) ):
Код:
bash-4.2$ python -m pygame.docs
info: Error while loading localization: There is no localization file for your language.

Открывается окно браузера с обширной локальной системой документации Python (URL: file:///usr/lib/python2.7/site-packages/pygame/docs/index.html ).


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

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10541
Откуда: Харьков
Olej писал(а):
P.S. Там же по ссылке и ещё одна книга автора в тему - "Invent You Own Computer Games with Python" ( как обещано в аннотации: with Pygames tutorial).
Изображение


Книги не дублируют друг-друга, в основном, так что их стоит пробежать обе... Именно пробежать, потому что изложение очень (подробно) размазано - 2 книги на 1 вечер - это как-раз норма будет ;-) . Тем не менее, интересно, и более чем достаточно, чтобы разобраться с pygame: и графическое рисование, и растровые изображения, и анимация ... и (что было неожиданно и интересно) воспроизведение аудио в разных форматах.

Для того, чтобы разобраться с pygame, достаточно, собственно 4-5 максимум примеров автора, не обязательно 2 книги ;-) . Эти (ключевые) примеры я проверил + собрал в один архив. Как всегда, там есть текстовый файл протокола (журнала) выполнявшихся команд: что и как запускать и т.д.


Вложения:
pygame.tgz [1.75 МБ]
Скачиваний: 448
Вернуться к началу
 Профиль Отправить личное сообщение  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 42 ]  На страницу 1, 2, 3, 4, 5  След.

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


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

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


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

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