Rating@Mail.ru

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


Текущее время: 20 фев 2018, 18:21

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




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

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

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


PyGTK - Интерфейс Python к GTK+.

1. Есть очень хороший учебник (перевод): Учебник PyGTK 2.0

2. Тоже может потребовать установки модулей, но для Python 2 нужные модули могут быть уже установлены (в разных дистрибутивах Linux ... и в зависимости от DE, наверное). По крайней мере хорошо бы проверить:
Код:
olej@notebook:~/2013_WORK/HISTORY/10.2013/24$ aptitude search python-gtk
p   bpython-gtk                                          - fancy interface to the Python interpreter - GTK+ frontend
p   python-gtk-gnash                                     - GNU Shockwave Flash (SWF) player - Python bindings
p   python-gtk-vnc                                       - VNC viewer widget for GTK+2 (Python binding)
i A python-gtk2                                          - Python-привязки для набора элементов графического интерфейса GTK+
p   python-gtk2-dbg                                      - Python bindings for the GTK+ widget set (debug extension)
i   python-gtk2-dev                                      - GTK+ bindings: devel files
i A python-gtk2-doc                                      - Python bindings for the GTK+ widget set - documentation
p   python-gtk2-tutoria                                  - tutorial for the GTK2 python library
p   python-gtkglext1                                     - GtkGLext python bindings
p   python-gtkmvc                                        - model-view-controller (MVC) implementation for pygtk
p   python-gtkmvc-doc                                    - pygtkmvc documentation, tutorial and examples
i A python-gtksourceview2                                - Python bindings for the GtkSourceView widget
p   python-gtkspell                                      - Python bindings for the GtkSpell library


3. Простейший пример (Python 2), как это выглядит:
Код:
#!/usr/bin/env python
#-*- coding: UTF-8 -*-

import gtk

def button_clicked(button):
    print 'Hello World!'

def main():
    window = gtk.Window()
    window.set_default_size(240, 180)
    window.set_title('Hello World!')
    window.connect('destroy', lambda w: gtk.main_quit())

    button = gtk.Button('Press Me')
    button.connect('clicked', button_clicked)
    button.show()

    window.add(button)
    window.present()

    gtk.main()


if __name__ == '__main__':
    main()

Код:
olej@notebook:~/2013_WORK/Python/GUI/PyGTK$ python hw2gtk.py
Hello World!
Hello World!
Hello World!
...


Вложения:
hw3gtk.py_018.png
hw3gtk.py_018.png [ 5.43 КБ | Просмотров: 4864 ]
hw3gtk.py [490 байт]
Скачиваний: 378
Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Python - графика
Непрочитанное сообщениеДобавлено: 24 окт 2013, 18:13 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10524
Откуда: Харьков
Olej писал(а):
PyGTK - Интерфейс Python к GTK+.
...

2. Тоже может потребовать установки модулей, но для Python 2 нужные модули могут быть уже установлены (в разных дистрибутивах Linux ... и в зависимости от DE, наверное).


4. Пакетов PyGTK под Python 3 я не нашёл ... почти наверняка реализация PyGTK под Python 3 есть на сайте проекта, в виде исходных кодов и т.д.
Но! ...

5.
Цитата:
Начиная с версии 2012 года (версии 2.8), обёртки объектов Glib вынесены в отдельную библиотеку — PyGObject, в которая должна полностью вытеснить PyGTK при использовании GTK+ версии 3

Код:
$ aptitude search python3-gi
p   python3-gi             - Python 3 bindings for gobject-introspection libraries
p   python3-gi-cairo       - Python 3 Cairo bindings for the GObject library
p   python3-gi-dbg         - Python 3 bindings for gobject-introspection libraries (debug extension)

(обратите внимание как называются пакеты!)
После установки python3-gi предыдущий пример можно переписать (имена API и др. многое поменялось! ... ну, и импорт и т.д.):
Код:
#!/usr/bin/python3
#-*- coding: UTF-8 -*-

from gi.repository import Gtk

def button_clicked(button):
    print( 'Hello World!' )

def main():
    window = Gtk.Window()
    window.set_default_size(240, 180)
    window.set_title('Hello World!')
    window.connect('destroy', lambda w: Gtk.main_quit())

    button = Gtk.Button('Press Me')
    button.connect('clicked', button_clicked)
    button.show()

    window.add(button)
    window.present()

    Gtk.main()


if __name__ == '__main__':
    main()


Вот вам на Python 3:
Код:
olej@notebook:~/2013_WORK/Python/GUI/PyGTK$ python3 hw4gtk.py
Hello World!
Hello World!
Hello World!
...

Картинка будет в точности та же, что и предыдущая ... повторяться не будем ;-)

P.S. В точности то же приложение можно выполнить (с той же картинкой) и в Python 2 ... но с уймой warnings (в терминал) от GTK: то ему color-схема не та, то какието offset ... с совместимостью надо разбираться.
Хотя, судя по описаниям PyGObject, с ним должны работать и 2 и 3.


Вложения:
hw4gtk.py [510 байт]
Скачиваний: 391
Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Python - графика
Непрочитанное сообщениеДобавлено: 24 окт 2013, 18:20 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10524
Откуда: Харьков
Olej писал(а):
PyGTK - Интерфейс Python к GTK+.


6. По миграции кода из PyGTK в PyGObject есть достаточно полное руководство : PyGObject - GLib/GObject/GIO Python bindings.

И на русском ;-) языке : Кратко о PyGI


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

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10524
Откуда: Харьков
Ali писал(а):
Для python существует модуль PyZenity.
сайт проекта -- http://brianramos.com/?page_id=38
PyPi -- https://pypi.python.org/pypi/PyZenity


OK ;-)

1. берём здесь: PyZenity-0.1.7.tar.gz

2. устанавливаем так:
Код:
olej@notebook:~/2013_WORK/Python/GUI/PyZenity$ tar -xzvf PyZenity-0.1.7.tar.gz
PyZenity-0.1.7/
PyZenity-0.1.7/PyZenity.py
PyZenity-0.1.7/PKG-INFO
PyZenity-0.1.7/setup.py
olej@notebook:~/2013_WORK/Python/GUI/PyZenity$ cd PyZenity-0.1.7


- Python 2 :
Код:
olej@notebook:~/2013_WORK/Python/GUI/PyZenity/PyZenity-0.1.7$ sudo python setup.py install
running install
running build
running build_py
running install_lib
copying build/lib.linux-i686-2.7/PyZenity.py -> /usr/local/lib/python2.7/dist-packages
byte-compiling /usr/local/lib/python2.7/dist-packages/PyZenity.py to PyZenity.pyc
running install_egg_info
Writing /usr/local/lib/python2.7/dist-packages/PyZenity-0.1.7.egg-info


- Python 3 :
Код:
olej@notebook:~/2013_WORK/Python/GUI/PyZenity/PyZenity-0.1.7$ sudo python3 setup.py install
running install
running build
running build_py
creating build/lib
copying PyZenity.py -> build/lib
running install_lib
copying build/lib/PyZenity.py -> /usr/local/lib/python3.2/dist-packages
byte-compiling /usr/local/lib/python3.2/dist-packages/PyZenity.py to PyZenity.cpython-32.pyc
running install_egg_info
Writing /usr/local/lib/python3.2/dist-packages/PyZenity-0.1.7.egg-info


3. примеры кода (хоть Python 2, хоть 3):

Код:
import PyZenity

a = PyZenity.GetText( text="Enter the string : ", entry_text="", password=False )

print( a )

Код:
olej@notebook:~/2013_WORK/Python/GUI/PyZenity$ python enter.py
...
map

Вложение:
enter.png
enter.png [ 8.59 КБ | Просмотров: 4851 ]



Код:
import PyZenity

x = PyZenity.List( ["choices","test1","test2"], title="selection", boolstyle="checklist",
                   editable=False, select_col="ALL", sep='|',
                   data=[["","hello","hi"],["","1","2"]])
print( x )

Код:
olej@notebook:~/2013_WORK/Python/GUI/PyZenity$ python select.py
...
['1', '2']

Вложение:
selection.png
selection.png [ 10.91 КБ | Просмотров: 4852 ]


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

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10524
Откуда: Харьков
Olej писал(а):
PyGTK - Интерфейс Python к GTK+.


ОК, из тех GUI-фреймворков, что упоминались ранее, и что меня интересуют, остался один:

wxPython

1. Проект wxPython, как несложно догадаться, происходит от широко известного родительского проекта wxWidgets. В основе, wxWidgets — библиотека GUI, реализованная на C++.
Для работы библиотеки wxWidgets используют низкоуровневым API (native) конкретной платформы, главная задача при этом — быть как можно более системо-независимой и работать под самыми разнообразными операционными системами. Таким образом параллельно существуют несколько различных портов wxWidgets: wxGTK, wxMSW, wxMac, wxPalmOS, wxOS2, wxMGL, wxX11.
Это то, что я помню из wxWidgets ;-)

2. Библиотеки wxWidgets гораздо более чужеродные Linux, чем GTK+ или Ot, потому всё необходимое для использования wxPython нужно устанавливать дополнительно:
Код:
$ aptitude search python-wx
p   python-wxglade      - GUI designer written in Python with wxPython
p   python-wxgtk2.8     - wxWidgets Cross-platform C++ GUI toolkit (wxPython binding)
p   python-wxgtk2.8-dbg - wxWidgets Cross-platform C++ GUI toolkit (wxPython binding, debug version)
p   python-wxmpl        - Painless matplotlib embedding in wxPython
p   python-wxtools      - wxWidgets Cross-platform C++ GUI toolkit (wxPython common files)
p   python-wxversion    - wxWidgets Cross-platform C++ GUI toolkit (wxPython version selector)

Минимально достаточно будет установить python-wxgtk2, всё остальное необходимое он подтянет по зависимостям...

3. Самое минимальное "приложение" ;-) (трудно придумать что-то ещё проще) при использовании wxPython будет иметь вид:
Код:
import wx

class App( wx.App ):

    def OnInit(self):
        frame = wx.Frame( parent=None, title='Bare' )
        frame.Show()
        return True
   
app = App()
app.MainLoop()


Вложения:
Bare_018.png
Bare_018.png [ 3.82 КБ | Просмотров: 4845 ]
Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Python - графика
Непрочитанное сообщениеДобавлено: 25 окт 2013, 15:10 
Не в сети
Писатель
Аватара пользователя

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


4. По wxPython издано парочка обстоятельных книг (от его автора).
Есть перевод одной: WxPython in Action (перевод) - обстоятельно и более чем достаточно для квалифицированной работы.

5. Вот ещё одно приложение (из книги)...
Для внешнего вида кода ... + оно демонстрирует оригинальным образом перенаправление потоков SYSOUT и SYSERR из Python-кода в созданное окно:
Код:
import wx
import sys

class Frame(wx.Frame):

    def __init__(self, parent, id, title):
        print "Frame __init__"
        wx.Frame.__init__(self, parent, id, title)

class App(wx.App):

    def __init__(self, redirect=True, filename=None):
        print "App __init__"
        wx.App.__init__(self, redirect, filename)

    def OnInit(self):
        print "OnInit"                                                        # Writing to stdout
        # Creating the frame
        self.frame = Frame(parent=None, id=-1, title='Startup')
        self.frame.Show()
        self.SetTopWindow(self.frame)
        print >> sys.stderr, "A pretend error message"   # Writing to stderr
        return True

    def OnExit(self):
        print "OnExit"

if __name__ == '__main__':
    app = App(redirect=True)     # Text redirection starts here
    print "before MainLoop"        # The main event loop is entered here
    app.MainLoop()
    print "after MainLoop"


Запуск приложения ... очень любопытно проследить какие сообщения print будут отправлены в окно приложения, а какие — в терминал запуска:
Код:
$ python sysout.py
App __init__
after MainLoop

А вот само окно приложения:
Вложение:
stdout-stderr.png
stdout-stderr.png [ 8.14 КБ | Просмотров: 4843 ]


6. Все примеры в руководствах (и Интернет) для wxPython показаны в синтаксисе Python 2.
Это объясняется тем, нужно думать, тем, что ещё на середину 2012 года создатель и вдохновитель wxPython Robin Dunn сообщал о сборке wxPython в своём блоге исключительно в порядке экспериментов.
На сайте проекта, в качестве последних стабильных реализаций, представлены (на 31 августа 2013г.) только реализации под Python 2.7.

7. Высказываются мнения, что реализация wxPython могла бы быть стандартным GUI фреймворком для Python … если бы хронологически раньше эту позицию не занял Tkinter. WxPython используется в достаточно многих открытых публичных проектах.


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

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10524
Откуда: Харьков
Olej писал(а):
Olej писал(а):
PyGTK - Интерфейс Python к GTK+.


ОК, из тех GUI-фреймворков, что упоминались ранее, и что меня интересуют, остался один:

wxPython


Всё, что из всего предыдущего обсуждения сложилось, внятно и последовательно (надеюсь) описано связным текстом здесь: Python.


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

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10524
Откуда: Харьков
Достаточно интересная статья Анализ временных рядов с помощью python
Цитата:
24 декабря в 12:01

В сегодняшней статье, я попытаюсь описать процесс анализа временных рядов с помощью python и модуля statsmodels. Данный модуль предоставляет широкий набор средств и методов для проведения статистического анализа и эконометрики.


Это, конечно, ещё не очень серьёзный анализ временных рядов, или DSP обработки временных последовательностей.
Но это может быть очень неплохой отправной точкой для развития, потому что дорастить это математическими методами и DSP-алгоритмами - дело не столь сложное. Такие подходы могут очень сильно "выстрелить" в реальных (железных) системах обработки данных, в системах АСУТП, встраиваемой автоматики и т.п.
На это стоит обратить внимание.

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

Ну, и от того же автора статьи в тему:

Введение в анализ данных с помощью Pandas

Введение в визуализацию данных при анализе с помощью Pandas

Изображение


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

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10524
Откуда: Харьков
И говоря о графике Python, совершенно нельзя не упомнить Reinteract - совершенно прелестнейшая штучка:
Изображение
Изображение


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

Зарегистрирован: 18 окт 2011, 20:26
Сообщения: 73
Если оставить за скобками GUI, то применительно к заявленной теме "Python - графика" можно вспомнить о библиотеки PyOpenGL
с примером особо мудрить не стал :-D
Код:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *

x = 50
y = 50
ESCAPE = '\033'

def keyPressed(*args):
    if args[0] == ESCAPE:
       glutDestroyWindow(window)
       sys.exit()

def InitGL():
   glClearColor(0.5, 0.5, 0.5, 1.0)
   glLoadIdentity()

def glut_print( x,  y,  font,  text, r,  g , b , a):
    blending = False
    if glIsEnabled(GL_BLEND) :
        blending = True
    glColor3f(1,1,1)
    glWindowPos2f(x,y)
    for ch in text :
        glutBitmapCharacter( font , ctypes.c_int( ord(ch) ) )

    if not blending :
        glDisable(GL_BLEND)

def DrawGLScene():
   glClear(GL_COLOR_BUFFER_BIT)
   glLoadIdentity()
   glBegin(GL_QUADS)
   glColor3f(0.3, 0.5, 1.0)
   glVertex3f(-0.8, 0.8, 0.0)
   glColor3f(1.0, 0.0, 0.0)
   glVertex3f(0.8, 0.8, 0.0)
   glColor3f(0.0, 0.0, 1.0)
   glVertex3f(0.8, -0.8, 0.0)
   glColor3f(0.0, 1.0, 0.0)
   glVertex3f(-0.8, -0.8, 0.0)
   glEnd()
   glut_print( x , y , GLUT_BITMAP_TIMES_ROMAN_24 , "Hello World!" , 1.0 , 1.0 , 1.0 , 1.0 )
   glutSwapBuffers()

glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB)
glutInitWindowSize(320, 240)
glutInitWindowPosition(x, y)
glutInit(sys.argv)
window = glutCreateWindow(b"Test PyOpenGL")
glutDisplayFunc(DrawGLScene)
glutKeyboardFunc(keyPressed)
InitGL()
print "Нажать ESC для выхода."
glutMainLoop()


$ python PyOpenGL.py
Вложение:
PyOpenGL.jpg
PyOpenGL.jpg [ 16.94 КБ | Просмотров: 2290 ]


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

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


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

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


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

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