рдЦреИрд░, PySide рдХреА рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд┐рдд рд░рд┐рд▓реАрдЬрд╝ рд╕рд╛рдордиреЗ рдЖрдИ рд╣реИред рдХреБрдЫ рд╣реИрдмрд░рд╡рд╛рдЗрдЯреНрд╕ рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗ, рдХреБрдЫ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрд╛ рд▓рд┐рдпрд╛ рд╣реИред
рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ, рдореБрдЭреЗ рдорд╛рдпрд╛рд╡реА рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдФрд░ рдЪрд╛рдХреЛ рдЪрд╛рд░реНрдЯ рдмрд┐рд▓реНрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдЬреЛ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ - рд╣рдо
code.enthought.com/chaco рдФрд░
code.enthought.com/projects/mayavi рдкрдврд╝рддреЗ рд╣реИрдВ )ред рдореЗрд░рд╛ рдХрд╛рдо рдЕрдкрдиреЗ HPGL-GUI рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЙрдирдХреЗ рдлреНрд░реЗрдо рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдирд╛ рдерд╛ред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдореИрдВрдиреЗ PyQt4 рдореЗрдВ рд╕рдм рдХреБрдЫ рд▓рд┐рдЦрд╛ рдерд╛ рдФрд░ рдПрдХ рдЪреАрдЬ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдореЗрд░реЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдареАрдХ рдерд╛ред рд╕рдорд╕реНрдпрд╛ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдереАред PySide LGPL v2.1 рдХреЗ рддрд╣рдд рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЬреЛ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реИред
PySide рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛ рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдХреНрд░рд┐рдп рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП рдмреИрдХреЗрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рдЪреБрдХрд╛ рд╣реИред рдпрд╣ рддрдм рдерд╛ рдЬрдм рдкрд╣рд▓реЗ рдиреБрдХрд╕рд╛рди рдХрд╛ рдореБрдЭреЗ рдЗрдВрддрдЬрд╛рд░ рдерд╛ред
рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП PySide рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдЕрднрд╛рд╡ред
рд╕реНрд░реЛрддреЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдереЛрдбрд╝рд╛ рднрдЯрдХрдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ 'рдХреНрдпреВрдЯреА_рдПрдкреАрдЖрдИ' рдХреЛ 'рдкреАрд╕рд╛рдЗрдб' рдорд╛рди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:
рдЖрдпрд╛рдд os
рдУрдПрд╕ ред environ [ 'QT_API' ] = 'pyside'
рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЖрд╡реЗрджрди рдиреЗ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ред рд╕реНрд░реЛрдд рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреАред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реБрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЦрд░реЛрдВрдЪ рд╕реЗ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдмрд╣реБрдд рд╣реА рдШреГрдгрд┐рдд рдФрд░ рд▓рдВрдмрд╛ рд╣реИред рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдЧреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░реЗрдВрдЧреЗред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЧреАрддрд╛ рд╕реЗ рдкреИрдХреЗрдЬ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдЦреБрдж рдХреЛ PySide, git, subversion, setuptools, swig, numpy, scipy, vtk, wxpython рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╡рд┐рди рдХреЗ рд▓рд┐рдП mingw (vtk рдФрд░ wxpython) рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдореИрдВ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рд╕рдордп рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП
www.lfd.uci.edu/~gohlke/pythonlibs рдпрд╣рд╛рдВ рд╕реЗ рд▓реЗрдВ)ред
- рдИрдЯреАрдПрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдбрд╛рд▓реЗрдВ, рдЗрд╕реЗ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХреНрд▓реЛрди рдХрд░реЗрдВ:
git рдХреНрд▓реЛрди рдХреНрд▓реЛрди git: // github.com / рдЙрддреНрд╕рд╛рд╣реА / рд▓рдХреНрд╖рдг .it рд▓рдХреНрд╖рдг
git рдХреНрд▓реЛрди git: // github.com / рдЙрддреНрд╕рд╛рд╣рд┐рдд / traitsbackendqt.git рдЯреНрд░реИрдХреНрдЯреНрд╕BackendQt
git рдХреНрд▓реЛрди рдХреНрд▓реЛрди git: // github.com / рдЙрддреНрд╕рд╛рд╣реА / traitsbackendwx.git рдЯреНрд░реИрдХреНрдЯрд╕рдмреЗрдХрдбрдмреНрд▓реВрдПрдХреНрд╕
git clone git: // github.com / рдЙрддреНрд╕рд╛рд╣реА / traitsgui.git TraitsGUI
git clone git: // github.com / рдЙрддреНрд╕рд╛рд╣рд┐рдд / рд╕рдХреНрд╖рдо.рдЬрд┐рдд рд╕рдХреНрд╖рдо рдХрд░реЗрдВ
git рдХреНрд▓реЛрди рдХреНрд▓реЛрди git: // github.com / рдЙрддреНрд╕рд╛рд╣реА / chaco.git рдЪрд╛рдХреЛ
git clone git: // github.com / рдЙрддреНрд╕рд╛рд╣рд┐рдд / рдорд╛рдпрд╛рд╡реА.рдЬреАрдд рдорд╛рдпрд╛рд╡реА
git clone git: // github.com / рдЙрддреНрд╕рд╛рд╣рд┐рдд / рдЙрддреНрд╕рд╛рд╣рд┐рдд / рдЙрддреНрд╕рд╛рд╣рд┐рдд
git рдХреНрд▓реЛрди рдХреНрд▓реЛрди git: // github.com / рдЙрддреНрд╕рд╛рд╣реА / envisagecore.git EnvisageCore
git рдХреНрд▓реЛрди рдХреНрд▓реЛрди git: // github.com / рдЙрддреНрд╕рд╛рд╣реА / рдкрд░рд┐рдХрд▓реНрдкрд┐рдд / рд╡рд┐рдЪрд╛рд░рдХред рдкрд░рд┐рдХрд▓реНрдкрдирд╛Plugins
git рдХреНрд▓реЛрди рдХреНрд▓реЛрди git: // github.com / рдЙрддреНрд╕рд╛рд╣реА / etsdevtools.git ETSDevTools
git рдХреНрд▓реЛрди рдХреНрд▓реЛрди git: // github.com / рдЙрддреНрд╕рд╛рд╣реА / blockcanvas.it рдмреНрд▓реЙрдХрдЪреИрдирд╡рд╛рд╕
git рдХреНрд▓реЛрди рдХреНрд▓реЛрди git: // github.com / рдЙрддреНрд╕рд╛рд╣реА / graphcanvas.git рдЧреНрд░реЗрдлреИрдирд╡рд╛рд╕
git рдХреНрд▓реЛрди рдХреНрд▓реЛрди git: // github.com / рдЙрддреНрд╕рд╛рд╣рд┐рдд / рдХреЛрдбреЗрдЯреВрд▓рд╕реЗрдЬрд┐рдд рдХреЛрдбрдЯреВрд▓
git рдХреНрд▓реЛрди рдХреНрд▓реЛрди git: // github.com / рдЙрддреНрд╕рд╛рд╣реА / apptools.git AppTools
git рдХреНрд▓реЛрди рдХреНрд▓реЛрди git: // github.com / рдЙрддреНрд╕рд╛рд╣реА / scimath.git SciMath
- рд╣рдо рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
рдЕрдЬрдЧрд░ рдИрдЯреНрд╕ рдкрд╛рдИ рдХрд╛ рд╡рд┐рдХрд╛рд╕
- рдпрджрд┐ рдЕрд╕реЗрдВрдмрд▓реА рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдИ, рддреЛ рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ
- рдПрдХ рд╕рдлрд▓ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж, рдорд╛рдпрд╛рд╡реА / рдЙрддреНрд╕рд╛рд╣реА / tvtk / pyface / ui / qt4 / рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдЬрд╛рдПрдВ
рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЦреЛрд▓реЗрдВ рдФрд░ PyQt4 рдЖрдпрд╛рдд рдХреЛ PySide рдореЗрдВ рдмрджрд▓реЗрдВред
рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЖрдк рдлреЙрд░реНрдо рдХреЗ рдПрдХ рдбрд┐рдЬрд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдЖрдпрд╛рдд os
qt_api = os ред рдИрд░реНрд╖реНрдпрд╛ ред рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ( 'QT_API' , 'pyqt ' )
рдЕрдЧрд░ qt_api == ' pyqt ' :
PyQt4 рдЖрдпрд╛рдд QtGui, QtCore рд╕реЗ
рдФрд░ :
PySide рдЗрдВрдкреЛрд░реНрдЯ рд╕реЗ QtGui, QtCore
- рдПрдХ рд╣реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ init.py рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдЖрдкрдХреЛ PyQt рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд╕рд╛рде 26-30 рдХреА рд▓рд╛рдЗрдиреЛрдВ рдХреА рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
#if QtCore.QT_VERSION <0x040200:
# RuntimeError рдмрдврд╝рд╛рдПрдВ, "Qt v4.2 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди v% s"% QtCore.QT_VERSION_STR рдорд┐рд▓рд╛
#if QtCore.PYQT_VERSION <0x040100:
# RuntimeError рдмрдврд╝рд╛рдПрдВ, "PyQt v4.1 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди v% s"% QtCore.PYQT_VERSION_STR рдорд┐рд▓рд╛
- рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ TraitsBackendQt / рдЙрддреНрд╕рд╛рд╣реА / рд▓рдХреНрд╖рдг / ui / qt4 / ui_panel.py, рд▓рд╛рдЗрдиреЛрдВ 920-926 (рдлрд╝рдВрдХреНрд╢рди __add_widget (...)):
рдпрджрд┐ рдкрдВрдХреНрддрд┐ < 0 :
рдЕрдЧрд░ рдЖрдЗрдВрд╕реНрдЯреАрди ( w, QtGuiред QWidget ) :
рд▓реЗрдЖрдЙрдЯред AddWidget ( w )
рдПрд▓рд┐рдлрд╝рд╕реНрдЯреЗрдВрд╕ ( w, QtGuiред QLayout ) :
рд▓реЗрдЖрдЙрдЯред addLayout ( w )
рдФрд░ :
рд▓реЗрдЖрдЙрдЯред AddWidget ( w )
- рдЬреЛ рд▓реЛрдЧ рд╡рд┐рди рдХреЗ рддрд╣рдд рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдорд╛рдпрд╛рд╡реА \ рдЙрддреНрд╕рд╛рд╣реА \ tvtk \ pyface \ ui \ qt4 \ QVTKRenderWindowInteractor.py рдлрд╝рд╛рдЗрд▓ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдЖрдпрд╛рдд рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
ctypes рд╕реЗ pythonapi, c_void_p, py_object рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ
pythonapiред PyCObject_AsVoidPtr ред restype = c_void_p
pythonapiред PyCObject_AsVoidPtr ред argtypes = [ py_object ]
рдФрд░, рдЯреЗрдХреНрд╕реНрдЯ рд╕рдВрдкрд╛рджрдХ рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, str (int (self.winId ())) рдХреЛ str (int (pythonapi.PyCObject_AsVoidPtr) (self.winId ())) рдореЗрдВ рдмрджрд▓реЗрдВред
рдЗрди рд╕рднреА рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЗ рдмрд╛рдж, рдЖрдк рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЪрд╛рдХреЛ рдХреЗ рд▓рд┐рдП:
pastebin.ubuntu.com/575888рдорд╛рдпрд╛рд╡реА рдХреЗ рд▓рд┐рдП:
pastebin.ubuntu.com/575889рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╡рд┐рдЬреЗрдЯ рдХреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ:
PS рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдореИрдВ рдЪрд╛рдХреЛ рдФрд░ рдорд╛рдпрд╛рд╡реА рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдФрд░ рдиреБрдХрд╕рд╛рди рдкрд░ рд▓реЗрдЦ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВред