Rating@Mail.ru

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


Текущее время: 22 май 2018, 07:18

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




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

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10718
Откуда: Харьков
Olej писал(а):
чтобы разобраться с pygame: и графическое рисование, и растровые изображения, и анимация ... и (что было неожиданно и интересно) воспроизведение аудио в разных форматах.


Посмотрел я на эту реализацию аудио обработки и ясно стало вот что:

- такие возможности, возможно, и вполне достаточны для создания "шумового оформления" компьютерных игрушек, но для серьёзной работы со звуком это слишком убого...

- обработка аудио потоков - это вообще отдельный серьёзный вопрос, и его нужно бы разобрать отдельно и детально;

- ... всё это напомнило про большую работу по экспериментированию с аудиообработкой, которую я делал лет 5-6 назад, и которая вылилась в достаточно обстоятельное описание, которое и лежит вот здесь: аудио tools - самое время его достать и реставрировать применительно к текущей задаче;

- в стандартной библиотеке Python достаточно много модулей мультимедийной обработки (беру документацию по версии 3.2.2) - The Python Standard Library:
Цитата:
22. Multimedia Services
22.1. audioop — Manipulate raw audio data
22.2. aifc — Read and write AIFF and AIFC files
22.3. sunau — Read and write Sun AU files
22.4. wave — Read and write WAV files
22.5. chunk — Read IFF chunked data
22.6. colorsys — Conversions between color systems
22.7. imghdr — Determine the type of an image
22.8. sndhdr — Determine type of sound file
22.9. ossaudiodev — Access to OSS-compatible audio devices

Но (по поверхностному взгляду) - это только зачаточные возможности по аудиообработке. А серьёзная обработка может быть легко сделана:
- либо запуском как дочерних процессов аудиоутилит развитых проектов (ALSA, SoX, Ogg etc.);
- либо прямым использованием DLL библиотек этих же проектов.
Это связано ещё и с тем, что аудиообработка - это часто ресурсоёмкие алгоритмы цифровой обработки сигналов (DSP), а Python уступает в производительности на таких задачах в 40 и более раз (сообщается и о 100 раз). А увязывание Python-кода с исполняющими функциями C/C++, в общем, понятно, и уже хорошо рассмотрено: связка Python + C/C++.

P.S. вот как оно всё славно одно к одному вяжется ;-)

P.P.S. и тема эта - аудио - продолжаться будет здесь: обработка аудио потоков.


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

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

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


Достаточно часто требуется сделать очень простой граф. интерфейс. PyQt или PyGtk для такой задачи явно избыточны, а Tk я недолюбливаю. :-)
В linux под gtk есть очень простой путь -- Zenity.
Zenity это утилита, которая позволяет выводить на экран диалоговые окна GTK+ из командной строки и скриптов командной оболочки. https://help.gnome.org/users/zenity/sta ... on.html.ru
Возможности:
  • Color Selection DialogUse the --color-selection option.
  • Forms DialogUse the --forms option.
  • Message Dialog Error, Info, Question, Warning
  • Password DialogUse the --password option.
  • Scale DialogUse the --scale option.
  • Диалоговое окно ввода текстаUse the --entry option.
  • Диалоговое окно выбора файлаUse the --file-selection option.
  • Диалоговое окно календарьUse the --calendar option.
  • Диалоговое окно спискаUse the --list option.
  • Диалоговое окно текстовой информацииUse the --text-info option.
  • Диалоговое окно хода выполненияUse the --progress option.
  • Значок уведомленияUse the --notification option.

Для python существует модуль PyZenity.
сайт проекта -- http://brianramos.com/?page_id=38
PyPi -- https://pypi.python.org/pypi/PyZenity


Вложения:
inf.png
inf.png [ 118.69 КБ | Просмотров: 3666 ]
Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Python - графика
Непрочитанное сообщениеДобавлено: 24 окт 2013, 14:49 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10718
Откуда: Харьков
Ali писал(а):
Достаточно часто требуется сделать очень простой граф. интерфейс. PyQt или PyGtk для такой задачи явно избыточны, а Tk я недолюбливаю. :-)

Возвращаюсь в тему ... ;-)

Ali писал(а):
В linux под gtk есть очень простой путь -- Zenity.

Обязательно посмотрю.


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

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10718
Откуда: Харьков
Olej писал(а):
Ali писал(а):
Достаточно часто требуется сделать очень простой граф. интерфейс. PyQt или PyGtk для такой задачи явно избыточны, а Tk я недолюбливаю. :-)

Возвращаюсь в тему ... ;-)

Tkinter ... это никак не "просто Tk" ;-) , это интерфейс из Python к средствам рисования Tk, но он полностью скрывает Tk, и предоставляет свой собственный развитый API виджетов для программирования в Python.
Есть некоторые особенности:

1. Tkinter, хотя и обозначается модуль в составе библиотеки стандартных модулей Python ... но потребует дополнительной установки (в тех дистрибутивах где я видел).

2. Модуль Tkinter потребуется отдельно устанавливать для Python 2 и Python 3 ... или только для той версии, которая вас интересует (Python 2 и Python 3 могут быть установлены в системе одновременно ... будь то в Linux или в Windows).

- установка в Fedora (RFR 17) и др. .rpm:
Код:
# yum install tkinter
...
# yum install python3-tkinter.i686
...


- установка в Debian 7.0 и др. .deb:
Код:
$ aptitude search python-tk
p   python-tk           - Tkinter - написание Tk программ на Python
p   python-tk-dbg       - Tkinter - Writing Tk applications with Python (debug extension)
p   python-tksnack      - Sound extension to Tcl/Tk and Python/Tkinter - Python library
# apt-get install python-tk


$ aptitude search python3-tk
p   python3-tk          - Tkinter - Writing Tk applications with Python 3.x
p   python3-tk-dbg      - Tkinter - Writing Tk applications with Python 3.x (debug extension)
# apt-get install python3-tk
...


По названиям пакетов ... тут нужно проявить некоторую сообразительность ;-) , как видно, дистрибьюторы называют что и как хотят.

Что касается доустановки Tkinter в Windows, то тут (пока?) ничего не могу сказать.


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

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


3. Что касается написания имени пакета (об этом раньше, на стр.1 ;-) обсждения уже говориось):
- Tkinter в Python 2;
- tkinter в Python 3;

Но это обходится (особенно для .py программ, которые должны работать под любыми версиями Python), если записать импорт вот так:
Код:
try:
    from tkinter import *
except ImportError:
    from Tkinter import *


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


Больше по Tkinter ничего и не нужно для начала работы...


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

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


5. Я тут слепил приложение "по мотивам" учебного курса Coursera, можете поиграться:
Код:
#!/usr/bin/python3
# -*- coding: utf-8 -*-

import random
import math
try:
    from tkinter import *
except ImportError:
    from Tkinter import *

# initialize global variables used in your coden
val_range = 100
secret = 0
guesses = 0
limits = 7

# helper function to start and restart the game
def new_game():
    global secret, guesses, limits
    print( "\nNew game, range: [ 0...{} )".format( val_range ) )
    secret = random.randrange( 0,val_range )
    guesses = 0
    limits = int( math.ceil( math.log( val_range, 2 ) ) )

def new_range( high ):
    global val_range
    val_range = high
    if guesses > 0 :
        print( "... game over" )
    new_game()
   
def input_guess( event ):
    global guesses
    try :
        value = int( ent.get() )
    except ValueError:
        print( "Error: value must be integer!" )
        return;
    ent.delete( 0, END )
    guesses += 1
    if value < secret :
        print( "{} - lower ...".format( value ) )
    elif value > secret :
        print( "{} - higher ...".format( value ) )
    else :
        print( "Player wins!" )
        new_game()
        return
    if guesses >= limits :       
        print( "Computer wins! Secret number was {}".format( secret ) )
        new_game()
        return
       
root = Tk()
root.title( 'Угадай число!' )
root.geometry( '300x140' )

Label( root, text='Вводите следующее число...' ).pack( side=TOP )
but1 = Button( root, text='     Новая игра      ', command=new_game ).pack( side=BOTTOM )
but2 = Button( root, text='Диапазон 0...100 ', command=(lambda: new_range( 100 )) ).pack( side=BOTTOM )
but3 = Button( root, text='Диапазон 0...1000', command=(lambda: new_range( 1000 )) ).pack( side=BOTTOM )

ent = Entry( root, width=10 )
ent.pack( side=TOP )
ent.focus() # избавить от необходимости выполнять щелчок мышью по нажатию клавиши Enter
ent.bind( '<Return>', input_guess )

new_game()
root.mainloop()


Выполнять можно хоть в Python 2, хоть в Python 3 ("что в лоб, что по лбу" ;-) ):
Код:
olej@notebook:~/2013_WORK/Python/GUI/Tkinter/Py3$ python gnt.py
...

olej@notebook:~/2013_WORK/Python/GUI/Tkinter/Py3$ python3 gnt.py

New game, range: [ 0...100 )
12 - lower ...

New game, range: [ 0...100 )

New game, range: [ 0...1000 )
500 - lower ...
750 - lower ...
875 - lower ...
945 - lower ...
970 - higher ...
957 - lower ...
967 - higher ...
Player wins!

New game, range: [ 0...1000 )
...

Вот то, что показано выше - это вывод хода игры, протокол, который выводится на терминал.

Изображение


Вложения:
gnt.py [1.98 КБ]
Скачиваний: 331
Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Python - графика
Непрочитанное сообщениеДобавлено: 24 окт 2013, 17:22 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10718
Откуда: Харьков
Olej писал(а):
Ali писал(а):
Достаточно часто требуется сделать очень простой граф. интерфейс. PyQt или PyGtk для такой задачи явно избыточны, а Tk я недолюбливаю. :-)

Возвращаюсь в тему ... ;-)


PyQt ...

Интерфейс Python к Qt4 (я никогда не видел интерфейса Python к Qt3).

1. Тоже потребует инсталляций дополнительных модулей, и тоже раздельно - для Python 2 и Python 3.

- Python 2 :
Код:
$ aptitude search python-qt
p   ipython-qtconsole                  - enhanced interactive Python shell - Qt console
p   python-qt4                         - Python bindings for Qt4
p   python-qt4-dbg                     - Python bindings for Qt4 (debug extensions)
p   python-qt4-dbus                    - D-Bus Support for PyQt4
p   python-qt4-dbus-dbg                - D-Bus Support for PyQt4 (debug extensions)
p   python-qt4-dev                     - Development files for PyQt4
p   python-qt4-doc                     - документация и примеры для PyQt4
p   python-qt4-gl                      - Python bindings for Qt4's OpenGL module
p   python-qt4-gl-dbg                  - Python bindings for Qt4's OpenGL module (debug extension)
p   python-qt4-phonon                  - Python bindings for Phonon
p   python-qt4-phonon-dbg              - Python bindings for Phonon (debug extensions)
p   python-qt4-sql                     - интерфейс Python к модулю Qt4 SQL
p   python-qt4-sql-dbg                 - Python bindings for PyQt4's SQL module (debug extension)

$ sudo apt-get install python-qt4 python-qt4-dev python-qt4-doc
...
Необходимо скачать 41,0 MБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 93,2 MB.
...
Настраивается пакет python-qt4-doc (4.9.3-4) …


- Python 3 :
Код:
$ aptitude search  python3-pyqt*
p   python3-pyqt4                      - Python3 bindings for Qt4
p   python3-pyqt4-dbg                  - Python3 bindings for Qt4 (debug extensions)
p   python3-pyqt4.phonon               - Python3 bindings for Phonon
p   python3-pyqt4.phonon-dbg           - Python3 bindings for Phonon (debug extensions)
p   python3-pyqt4.qsci                 - Python 3 bindings for QScintilla 2
p   python3-pyqt4.qtopengl             - Python 3 bindings for Qt4's OpenGL module
p   python3-pyqt4.qtopengl-dbg         - Python 3 bindings for Qt4's OpenGL module (debug extension)
p   python3-pyqt4.qtsql                - Python3 bindings for PyQt4's SQL module
p   python3-pyqt4.qtsql-dbg            - Python3 bindings for PyQt4's SQL module (debug extension)

# apt-get install python3-pyqt4
...
Настраивается пакет python-qt4-doc (4.9.3-4) …


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

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10718
Откуда: Харьков
Olej писал(а):
Olej писал(а):
Ali писал(а):
Достаточно часто требуется сделать очень простой граф. интерфейс. PyQt или PyGtk для такой задачи явно избыточны, а Tk я недолюбливаю. :-)

Возвращаюсь в тему ... ;-)


PyQt ...


2. Простейшее приложение ... для ощущения внешнего вида, как это выглядит:
Код:
#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
from PyQt4.QtGui import *

# Каждое приложение должно создать объект QApplication
# sys.argv - список аргументов командной строки
application = QApplication(sys.argv)

# QWidget - базовый класс для всех объектов интерфейса
# пользователя; если использовать для виджета конструктор
# без родителя, такой виджет станет окном
widget = QWidget()

widget.resize(320, 240)                 # изменить размеры виджета
widget.setWindowTitle("Hello, World!")  # установить заголовок
widget.show()                           # отобразить окно на экране

sys.exit(application.exec_())           # запуск основного цикла приложения

Код:
olej@notebook:~/2013_WORK/Python/GUI/PyQt$ python hw3pyqt.py
...


Вложения:
hw3pyqt_001.png
hw3pyqt_001.png [ 4.08 КБ | Просмотров: 4694 ]
hw3pyqt.py [958 байт]
Скачиваний: 340
Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Python - графика
Непрочитанное сообщениеДобавлено: 24 окт 2013, 17:37 
Не в сети
Писатель
Аватара пользователя

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

2. Простейшее приложение ... для ощущения внешнего вида, как это выглядит:


3. Теперь то же, но Python 3:
Код:
olej@notebook:~/2013_WORK/Python/GUI/PyQt$ python3 hw3pyqt.py
Gtk-Message: Failed to load module "canberra-gtk-module"

Причём само GUI-приложене нормально выполняется...

Это какие-то перекрёстные междуусобные разборки между GTK и Qt ... Но, чтоб такого не было ... установим ему что ему хочется ;-) :
Код:
olej@notebook:~/2013_WORK/Python/GUI/PyQt$ aptitude search canberra-gtk-
p   libcanberra-gtk-common-dev                      - simple abstract interface for playing event sounds                 
p   libcanberra-gtk-dev                             - simple abstract interface for playing event sounds                 
p   libcanberra-gtk-module                          - translates GTK+ widgets signals to event sounds                     
p   libcanberra-gtk-module-dbg                      - libcanberra GtkModule detached debugging symbols       

olej@notebook:~/2013_WORK/Python/GUI/PyQt$ sudo apt-get install libcanberra-gtk-module
...
Настраивается пакет libcanberra-gtk-module:i386 (0.28-6) …


И всё ;-) :
Код:
olej@notebook:~/2013_WORK/Python/GUI/PyQt$ python3 hw3pyqt.py
...


Так и запишем: работает с Python и 2 и 3.


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

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


4. В какое-то время от PyQt отпочковался проект PySide, и теперь они оба развиваются параллельно.
Код:
olej@notebook:~/2013_WORK/Python/GUI/PyQt$ aptitude search python3.2-pyside*
v   python3.2-pyside.phonon                                   -
v   python3.2-pyside.qtcore                                   -
v   python3.2-pyside.qtdeclarative                            -
v   python3.2-pyside.qtgui                                    -
v   python3.2-pyside.qthelp                                   -
v   python3.2-pyside.qtnetwork                                -
v   python3.2-pyside.qtopengl                                 -
v   python3.2-pyside.qtscript                                 -
v   python3.2-pyside.qtsql                                    -
v   python3.2-pyside.qtsvg                                    -
v   python3.2-pyside.qttest                                   -
v   python3.2-pyside.qtuitools                                -
v   python3.2-pyside.qtwebkit                                 -
v   python3.2-pyside.qtxml                                    -


Некоторые из разработчиков называют PySide более предпочтительным и удобным для использования, чем оригинальный PyQt.

Разницу PySide и PyQt читаем здесь: Differences_Between_PySide_and_PyQt. Там же есть некоторые рекомендации по портированию кода PyQt в PySide.


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

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


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

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


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

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