![](https://habrastorage.org/storage1/03624d87/50eb2542/9fec8af8/ca53b4bc.png)
PySideãããžã§ã¯ãã«é¢ããæ å ±ã¯Webäžã«ããã€ããããŸããããã·ã¢èªã§ã¯ããŸããããŸããã
ãã®èšäºã¯ããã®ã®ã£ãããåããè©Šã¿ã§ãã 次ã«ããããžã§ã¯ãã®ã¢ã»ã³ããªããšãã¥ã¬ãŒã¿ãŒã§ã®ã¢ããªã±ãŒã·ã§ã³ã®èµ·åãç¬èªã®ãã€ã³ãã£ã³ã°ã®äœæäŸã«ã€ããŠèª¬æããŸãã PySideã®äž»èŠãªæ©èœã®ããã€ããäŸãšãšãã«ç€ºããŸãã
ã¯ããã« PySideãšã¯äœã§ããïŒ
PySideã¯ã Pythonããã°ã©ãã³ã°èšèªãžã®Qtãã€ã³ãã£ã³ã°ãäœæããããã®ãããžã§ã¯ãã§ãã QtQuickãQtMobilityãå«ããã¹ãŠã®Qtæ©èœã®ãµããŒããå®è£ ããããšãç®çãšããŠããŸã ã çŸåšã次ã®ããŒãžã§ã³ã®ã³ã³ããŒãã³ããšãã©ãããã©ãŒã ããµããŒããããŠããŸãã
Qt | 4.6ã4.7ã4.8ãã¿ |
QtMobility | 1.2.0 |
Python | 2.5ã2.6ã2.7ã3.2ïŒå®éšçïŒ |
OS | Linux / X11ãMaemo 5ãMeeGoãWindowsãMac OS X |
Symbianã§PySideã䜿çšããå¯èœæ§ã¯ãŸã ãããŸããïŒãŸãã¯ããã®å¯èœæ§ã¯ããããŸããïŒããéçºè ã«ãããšããã®æ¹åã§ã®äœæ¥ã¯é²è¡äžã§ãã PyS60ã代æ¿ãšããŠäœ¿çšã§ããŸããã Qtãšã¯äœã®é¢ä¿ããªãã®ã§ãåŸã§èª¬æããŸããã
PySideãããžã§ã¯ãã«ã¯ãC / C ++ã§èšè¿°ãããã©ã€ãã©ãªã®ãã€ã³ãã£ã³ã°ãäœæã§ããããŒã«ã®ã»ãããå«ãŸããŠããŸãã ãããã®ããŒã«ã«ã€ããŠã¯åŸã§è©³ãã説æããŸãã
PySideã¯LGPLã®äžã§ã©ã€ã»ã³ã¹ãããŠããŸãã ãªãŒãã³ããã³ã¯ããŒãºã®äž¡æ¹ã®åçšãããžã§ã¯ãã§äœ¿çšã§ããŸãã PySideãœãŒã¹ã³ãŒãã¯å ¬éãããŠããã github.com / PySideã§å ¥æã§ããŸãã ãŸãã PySideã«é¢é£ããåé¡ãèŠã€ããå Žåã¯ã ãããžã§ã¯ãã®å ¬åŒãã°ãã©ãã«ãŒã«å ±åã§ããŸãã
PySide Buildããã«ã¹ãã§ãã¯
ããŠã³ããŒãããŒãžã§ ãããŸããŸãªOSã«PySideãã€ã³ã¹ããŒã«ããæé ãåç §ã§ããŸãã ããããLinuxãã£ã¹ããªãã¥ãŒã·ã§ã³ã§ã¯ããã®ãããªããã±ãŒãžã¯å©çšã§ããªãããšãå€æããå ŽåããããŸãã ãããèªåã§çµã¿ç«ãŠãŸããããããã¯ãŸã£ããé£ãããããŸããã ããã§ããQtéçºè ã¯ãŠãŒã¶ãŒã管çãã PySideã¢ã»ã³ããªã¢ã¯ã·ã§ã³ãå¯èœãªéãèªååããäžé£ã®ã¹ã¯ãªãããæºåããŸããã
ããã§ã¯ããã«ãã¹ã¯ãªããã䜿çšããŠGitãªããžããªã®ã¯ããŒã³ãäœæããŸãããã ãŸã äœãå¿ èŠãããŸãã äŸåé¢ä¿ã«ãããå¿ èŠãªãã¹ãŠã®ãããžã§ã¯ããè€è£œãããŸãã
$ git clone git://github.com/PySide/BuildScripts.git buildscripts $ cd buildscripts $ git submodule init $ git submodule update
Qtã®è€æ°ã®ããŒãžã§ã³ãã·ã¹ãã ã«ã€ã³ã¹ããŒã«ã§ããŸãã 䜿çšããããŒãžã§ã³ãæå®ããã«ã¯ãenviroment.shãã¡ã€ã«ãç·šéããŸãããã®ãã¡ã€ã«ã§ã¯ã QtããŒã ãã£ã¬ã¯ããªãžã®ãã¹ãšPySideãã€ã³ã¹ããŒã«ããããã¹ãæžã蟌ã¿ãŸãã enviroment.shãã¡ã€ã«ã«ã¯è©³çŽ°ãªã³ã¡ã³ããå«ãŸããŠãããããåé¡ã¯ãããŸããã ã·ã¹ãã ã«ããã©ã«ãã§ã€ã³ã¹ããŒã«ãããŠããQtã®ããŒãžã§ã³ã§ã¯ã PySideãåéãããªãå¯èœæ§ãããããšãããã«èŠåããŸãã QtSdkã®ææ°ããŒãžã§ã³ã䜿çšããŠãã«ãããããšããå§ãããŸãã
ãã¹ãŠã®æ§æãå®äºããã ã PySideã³ãã³ããåéããŸã
$ ./build_and_install
äœæ¥ã容æã«ããããã«ãenviroment.shãã¡ã€ã«ã¯ã PySideã䜿çšããã¢ããªã±ãŒã·ã§ã³ãèµ·åããã¹ã¯ãªããã«ç°¡åã«å€æãããŸãã ããªããããå¿ èŠãããã®ã¯ããããå®è¡å¯èœã«ããæåŸã«python $ @ãè¿œå ããããšã ãã§ãã
çµæã®ããã±ãŒãžã®æ©èœããã¹ãããããã«ã PySideã«é©åããPythonã® Qtãµã³ãã«ã䜿çšããŠãªããžããªã®ã¯ããŒã³ãäœæããŸã
$ git clone git://github.com/PySide/Examples.git pyside-examples
奜ããªãµã³ãã«ïŒHyper UIãªã©ïŒãå®è¡ããŸã
![](https://habrastorage.org/storage1/e717f6e4/450ea0bd/6553f6e4/b469d9ef.png)
![](https://habrastorage.org/storage1/d9869f4d/78ea3b9c/c15162c7/5047896d.png)
![](https://habrastorage.org/storage1/4c45b00e/d3a44f06/02f1bf97/174cb491.png)
ããã§ããã¹ãã·ã¹ãã çšã®PySideãæ§ç¯ããæºåãæŽããŸããã ãã ããéçºäžã¯ãQtSdkã«å«ãŸããŠããã·ãã¥ã¬ãŒã¿ãŒã§ã¢ããªã±ãŒã·ã§ã³ãå®è¡ãããšäŸ¿å©ãªå ŽåããããŸãã 圌女ã®ããã«ãPySideãæ§ç¯ããŸãããã ãããè¡ãã«ã¯ãenviroment.shãã¡ã€ã«ã®QT_SDK_HOMEå€æ°ãç·šéããŠãQtSimulatorãžã®ãã¹ïŒ$ {YOUPATH} / QtSDK / Simulator / Qt / gccïŒãQtããŒã ãã£ã¬ã¯ããªãšããŠæå®ããŸãã build_and_installãã¡ã€ã«ãç·šéããå¿ èŠããããŸããcmakestartã³ãã³ãã«-DQ_WS_SIMULATOR = yesãªãã·ã§ã³ãè¿œå ããå¿ èŠããããŸãã ãã®ãªãã·ã§ã³ã¯ãcmakeãã³ã³ãã€ã«ãå®è¡ãããã©ãããã©ãŒã ã決å®ããã®ã«åœ¹ç«ã¡ãŸãã
ä»ããã¢ã»ã³ããªãéå§ãããšãçŸæç¹ã§ã¯æ®å¿µãªãã倱æããŸãã QtWebKitã¢ãžã¥ãŒã«ã¯ã¢ã»ã³ãã«ã§ããŸããã ãã®ãšã©ãŒã«é¢ããã¬ããŒããäœæãããã®åé¡ãä¿®æ£ããå°ããªããããæ·»ä»ããŸããã ããããèšäºãæžããç¬éããã®ãã°ã¯ãŸã ä¿®æ£ãããŠããŸããã ãããã£ãŠããã®ãããã䜿çšããŠãQtSimulatorã§PySideãå®å šã«ãã«ãããŸãïŒäžèšã®ãªã³ã¯ã䜿çšããŠãã°ã¬ããŒããžã®æ·»ä»ãã¡ã€ã«ãåç §ããŠãã ããïŒã
![](https://habrastorage.org/storage1/d70c9a97/0d2e2171/57e24ebf/9f1a79bf.png)
![](https://habrastorage.org/storage1/b0a12902/e11124cf/96ea3cbc/2cb5e0e1.png)
QtSimulatorã®QtMobilityãã€ã³ãã£ã³ã°ã®æ§ç¯ã劚ãããã®ã¯äœããããŸããã ãã®ã¢ã»ã³ããªã¯ã PySideèªäœã®ã¢ã»ã³ããªãšå€ãããŸããã QtMobilityã¯ã¢ã»ã³ãã«ãããã·ãã¥ã¬ãŒã¿ãŒã§å®è¡ãããŸãããæ®å¿µãªããããããã®ã¢ãžã¥ãŒã«ãåäœããŠãããšã¯èšããŸããã å®å šã«ã QtMobilityèªäœãŸãã¯pyside-examplesããã±ãŒãžããæäŸãããåäžã®ãµã³ãã«ã¯æ©èœããŸããã§ããã ãŸãããã®çç±ã«ã€ããŠã察åŠãããããããã€ãããã«ã€ããŠæžããŸãã
![](https://habrastorage.org/storage1/8561a831/501385ff/1a464ab7/5f55eb9f.png)
PySideããã°ã©ãã³ã°ã®çŽ¹ä»ã ä¿¡å·ãšã¹ããããããããã£ã·ã¹ãã
ãã®ã»ã¯ã·ã§ã³ã¯ã Pythonããã°ã©ãã³ã°èšèªã®çŽ¹ä»ã§ã¯ãããŸããã Pythonã§ã®Qtã®äž»èŠãªæ©èœã®äœ¿çšæ¹æ³ã®ã¿ã瀺ããŸãã
ä¿¡å·ã¹ãããçžäºäœçš
from PySide import QtCore def say_hello(name): print "Hello,", name class Foo(QtCore.QObject): @QtCore.Slot(str) def say_bye(self, name): print "Bye,", name class Bar(QtCore.QObject): signal = QtCore.Signal(tuple) f = Foo() b = Bar() b.signal.connect(say_hello) b.signal.connect(f.say_bye) b.signal.emit("User.") b.signal.emit(1.25)
ä¿¡å·ã¯ãä¿¡å·ãšã¹ãããã®æ¥ç¶ãããã³ä¿¡å·èªäœã®éä¿¡ãå¶åŸ¡ããã¯ã©ã¹ã§ãã ä¿¡å·ãšãšãã«éä¿¡ããããã©ã¡ãŒã¿ã®ã¿ã€ãã¯ãäœææã«ç€ºãããŸãã ä»»æã®ã¿ã€ãã®Cããã³Pythonã䜿çšã§ããŸãã ïŒäžèšã®äŸã®ããã«ïŒç°ãªãã¿ã€ãã®ãã©ã¡ãŒã¿ãéä¿¡ããå Žåãã¿ãã«ãŸãã¯ãªã¹ããã¿ã€ããšããŠæå®ããå¿ èŠããããŸãã åãšåæ§ã«ãã·ã°ãã«ã¯QObjectããç¶æ¿ããã¯ã©ã¹å ã§å®£èšããå¿ èŠããããŸãã
è€æ°ã®ä¿¡å·ãäœæããå¿ èŠãããå Žåã¯ã次ã®èšé²ãã©ãŒã ã䜿çšã§ããŸã
class Test(QtCore.QObject): signals = QtCore.Signal((int,), (str,), (float, QtCore.QObject))
ãã®ã³ãŒãã¯ãSignaturesïŒintïŒãsignalsïŒQStringïŒãsignalsïŒdoubleãQObject *ïŒã®3ã€ã®ã·ã°ãã«ãè¿œå ããŸãã ãããã¯ãã¹ãŠã·ã°ãã«å€æ°ã«å«ãŸããŠãããæ¡ä»¶ä»ãã§èŸæžãšèŠãªãããšãã§ããŸãïŒå埩äžå¯ïŒã ä¿¡å·ãã©ã¡ãŒã¿ãŒã¯ããŒãšããŠäœ¿çšãããŸãã
someone.signals.emit(10) # , .. int someone.signals[str].emit("Hello everybody!") someone.signals[float, QtCore.QObject].emit(1.23, obj)
QObjectãã°ããŒãã«é¢æ°ããŸãã¯ã©ã ãé¢æ°ãããå¿ ãããç¶æ¿ãããªãã¯ã©ã¹ã®ã¡ãœããã¯ãã¹ããããšããŠæ©èœã§ããŸãã ãã ãããã®ãããªãªããžã§ã¯ãã¯çã®ã¹ãããã§ã¯ãªããããQMetaObjectã«ã¯ãããã«é¢ããæ å ±ããªãããããã®ã¢ãããŒãã¯æ éã«äœ¿çšããŠãã ããã ããšãã°ãã°ããŒãã«é¢æ°ãã¹ããããšããŠäœ¿çšããå Žåããã®äžã®åŒã³åºããªããžã§ã¯ãã«é¢ããæ å ±ãååŸã§ããŸããã
çã®ã¹ããããäœæããã«ã¯ãQtCoreã¢ãžã¥ãŒã«ã®Slotãã³ã¬ãŒã¿ãŒã䜿çšããå¿ èŠããããŸãã ã³ãŒãã§ã¯ã次ã®ããã«ãªããŸãã
@QtCore.Slot(int) @QtCore.Slot(str) def mySlot(value): print value
ãªãŒããŒããŒãã«ãŒã«ã¯ã¹ãããã«ã¯é©çšããããããããã¿ã€ãã®ãã©ã¡ãŒã¿ãŒãåãå ¥ããã¹ããããäœæã§ããŸããã ãã©ã¡ãŒã¿ãŒã®ã¿ã€ãããšã«åå¥ã®ãã³ã¬ãŒã¿ãŒãè¿œå ããå¿ èŠããããŸãã äžèšã¯ãintåããã³QStringåã®ãã©ã¡ãŒã¿ãŒãåãå ¥ããããšãã§ããã¹ãããã®äŸã§ãã
è¿œå ãã©ã¡ãŒã¿ãŒãšããŠã®QtCore.Signalã¯ã©ã¹ãšQtCore.Slotãã³ã¬ãŒã¿ãŒã®äž¡æ¹ã¯ãçæãããã·ã°ãã«ãšã¹ããããmetobjectæ å ±ã«ä¿åãããååã䜿çšã§ããŸãã ããã©ã«ãã§ã¯ãååãæå®ãããŠããªãå Žåãã·ã°ãã«ã«ã¯ãããå²ãåœãŠãããŠããã¯ã©ã¹ã¡ã³ããŒã®ååãå²ãåœãŠãããè£ é£Ÿãããã¡ãœããã®ååãã¹ãããã«å²ãåœãŠãããŸãã ã¹ãããã¯æ»ãã¿ã€ãã«èšå®ããããšãã§ããŸãã ãã®æ©èœã䜿çšããŠã PythonãšQMLãéä¿¡ã§ããŸãã
PythonãšQMLã®çžäºäœçšã®è©³çŽ°ã«ã€ããŠã¯ã developer.qt.nokia.comã®Pythonã»ã¯ã·ã§ã³ãã芧ãã ããã pyside-qml-examplesãèŠãããšãã§ããŸãã
ããããã£ã·ã¹ãã
Qtããããã£ã®æäœã¯ãåŸæ¥ã®Pythonããããã£ã®æäœãšå€§å·®ãããŸããã ã»ãã®å°ããªäŸã§ãã
from PySide import QtCore class MyObject(QtCore.QObject): def __init__(self): QtCore.QObject.__init__(self) self._x = None def getx(self): print "get" return self._x def setx(self, val): print "set" self._x = val prop = QtCore.Property(int, getx, setx) obj = MyObject() obj.prop = 12345 print obj.prop
Pythonã§ã®Qtããããã£ã®æäœã®è©³çŽ°ã«ã€ããŠã¯ã ãã¡ããã芧ãã ãã ã
PySideã䜿çšããŠGUIãäœæãã
PySide Toolsããã±ãŒãžã«ã¯ãã¢ããªã±ãŒã·ã§ã³ãªãœãŒã¹ã®æäœããã¯ã©ã·ãã¯ãã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹ã®éçºãããã³ã¢ããªã±ãŒã·ã§ã³ã®ããŒã«ã©ã€ãºã®ããã®æšæºQtããŒã«ãå«ãŸããŠããŸãã ãããã¯ãpyside-uiãpyside-rccãããã³pyside-lupdateã§ãã ãããã®æäœã¯ãQt / C ++ã®åãããã±ãŒãžãšåãã§ãã ãããã£ãŠãQtDesignerã§ã°ã©ãã£ã«ã«ã¢ããªã±ãŒã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ãäœæããæ©äŒããŸã ãããŸãã çµæã®ãã©ãŒã ã¯pyside-uiã䜿çšããŠã³ã³ãã€ã«ãããŸããpyside-uiã§ã¯ã-oãªãã·ã§ã³ãä»ããŠãã©ãŒã ãã¡ã€ã«ãšåºåãã¡ã€ã«ãå ¥åãã©ã¡ãŒã¿ãŒãšããŠæå®ããå¿ èŠããããŸãã Pyside-uiã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã®èµ·åã³ãŒããçµæã®Pythonãã¡ã€ã«ã«è¿œå ããè¿œå ã®èå³æ·±ããªãã·ã§ã³-xããããŸãã 以äžã¯ããã¶ã€ããŒããªãœãŒã¹ãããã³ããŒã«ã©ã€ãºã§äœæããããã©ãŒã ã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ãèµ·åããå°ããªäŸã§ã
from PySide import QtCore, QtGui from form_ui import * # import resources_rc # if __name__ == "__main__": import sys translator = QtCore.QTranslator() translator.load(':/i18n/translations/ru_RU') # app = QtGui.QApplication(sys.argv) app.installTranslator(translator) Form = QtGui.QWidget() ui = Ui_Form() ui.setupUi(Form) Form.show() sys.exit(app.exec_())
ãŸãã PySideã«ã¯ãQtQuickãå«ãè¿å¹Žã®å€ãã®Qtã°ããºããããŸãã ã€ãŸã PythonãšQML ïŒQtQuick.ParticlesãQt Desktop Componentsãªã©ïŒã䜿çšããŠãã€ããªããã¢ããªã±ãŒã·ã§ã³ãäœæããæ©äŒã奪ãããŠããŸããã
ç¬èªã®ãã€ã³ãã£ã³ã°ãäœæããäŸ
äžèšã®ãã¹ãŠãç¥ã£ãŠãããšãQtQuickã䜿çšãããã®ãå«ãã Qtã䜿çšããŠã«ã¹ã¿ã Pythonã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸãã ããããC / C ++ã§æžãããã©ã€ãã©ãªããããžã§ã¯ãã§äœ¿çšããå¿ èŠãããå ŽåããŸãã¯åãC / C ++ã§äœæããã以åã®éçºã䜿çšããå¿ èŠãããå Žåã¯ã©ããªããŸããïŒ Pythonã§ãã¹ãŠãæžãçŽããªãã§ãã ããïŒ
ããšãã°ã Qt Componentsã䜿çšããç¹å®ã®ãããžã§ã¯ãããããŸã ã äž»ãªæ©èœã¯ãã¹ãŠQMLã§èšè¿°ãããŠããŸãã ãããããããå®è¡ããã«ã¯ããã§ã«C ++ã§èšè¿°ãããQmlDesktopViewerã¯ã©ã¹ãå¿ èŠã§ãã Pythonã§æžãçŽãããšã¯é£ãããããŸããããä»ã§ã¯é¢çœããªãã§ãããã ãã®ã¯ã©ã¹ãPythonã«ç¬èªã«ãã€ã³ãããŠã¿ãŸãããã
ãããè¡ãã«ã¯ã PySideãããžã§ã¯ãã®ããŒã«ã䜿çšããŠãã€ã³ãã£ã³ã°ãäœæããŸãã ãããã¯ãAPI ExtractorãShibokenãããã³Generator Runnerã§ãã ãããã®ããŒã«ã¯ãã¹ãŠæã£ãŠããŸãã
ãã€ã³ãã£ã³ã°ãäœæããã«ã¯ããŸãããšã¯ã¹ããŒããé衚瀺ãååå€æŽãªã©ã®ããŒã¿ãèšè¿°ããxmlãã¡ã€ã«ãäœæããå¿ èŠããããŸãã äžè¬ã«ãçµæã®Pythonã¢ãžã¥ãŒã«ã§ã¢ã¯ã»ã¹ãããã®ã
<?xml version="1.0"?> <!-- , --> <!-- package "" () --> <!-- PySide/QmlDesktopViewer --> <!-- c qmldesktopviewer_module_wrapper.cpp pyside_qmldesktopviewer_python.h --> <typesystem package="PySide.QmlDesktopViewer"> <load-typesystem name="typesystem_declarative.xml" generate="no" /> <!-- x11Event. --> <!-- .. x11Event Python --> <rejection class="*" function-name="x11Event" /> <!-- , , .. --> <!-- --> <!-- PySide/QmlDesktopViewer --> <!-- logwidget_wraper.cpp logwidget_wraper.h) --> <object-type name="LoggerWidget" /> <!-- qmldesktopviewer_wraper.cpp qmldesktopviewer_wraper.h) --> <object-type name="QmlDesktopViewer" /> </typesystem>
ãžã§ãã¬ãŒã¿ãŒã®åºåã§ååŸãããã¡ã€ã«ã詳现ã«å ·äœçã«èª¬æããŸããã Pythonã¢ãžã¥ãŒã«ãååŸããããã«ã³ã³ãã€ã«ãããŸãã ãããç解ãããšããã«ãã·ã¹ãã çšã®ãããžã§ã¯ããã¡ã€ã«ãç°¡åã«äœæã§ããŸãã ãã®ãã¡ã€ã«ãã³ã³ãã€ã«ããããã®ã«ãŒã«ã®è©³çŽ°ã«ã€ããŠã¯ã API Extractorã®ããã¥ã¡ã³ããåç §ããŠãã ããã
次ã®ã¹ãããã¯ããã€ã³ãã£ã³ã°ãè¡ãããŠããããŒã¿ã«é¢ããæ å ±ãæœåºããããã«äœ¿çšãããC ++èšèªããããŒãã¡ã€ã«ãäœæããããšã§ãã
#undef QT_NO_STL #undef QT_NO_STL_WCHAR #ifndef NULL #define NULL 0 #endif #include "pyside_global.h" #include <loggerwidget.h> #include <qmldesktopviewer.h>
PySideãã«ãäžã«åãåã£ãpyside_global.hãã¡ã€ã«ã ãããžã§ã¯ãã«ã³ããŒãããããã®å Žæã«ãã¹ãè¿œå ã§ããŸãã
ãã«ãã·ã¹ãã ãšããŠãCMakeã䜿çšããŸãã ããã§ã¯ã¢ã»ã³ããªèªäœã«ã€ããŠã¯èª¬æããŸããã å®å šãªãµã³ãã«ã³ãŒãã¯ã ããã§ååŸã§ããŸã ã ãããäŸãšããŠäœ¿çšããŠãç¬èªã®ãã€ã³ãã£ã³ã°ãäœæã§ããŸãã
ãããžã§ã¯ããã³ã³ãã€ã«ããã¯ã©ã¹ã®ã©ãããŒãå«ãã©ã€ãã©ãªãååŸããŸããããã¯ã Pythonã®ã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšã§ããŸãã çµæã®ã¢ãžã¥ãŒã«ã䜿çšããŠãQtãã¹ã¯ãããã³ã³ããŒãã³ãã®ãµã³ãã«ã®1ã€ãå®è¡ããŸãã
#!/usr/bin/env python from PySide.QtCore import * from PySide.QtGui import * from PySide.QmlDesktopViewer import * if __name__ == "__main__": import sys if len(sys.argv) < 2: print "Usage: qmldesktopviewer <qml file>" sys.exit() app = QApplication(sys.argv) viewer = QmlDesktopViewer() viewer.open(sys.argv[1]) sys.exit(app.exec_())
![](https://habrastorage.org/storage1/c4ace511/aa420763/3b6c6b4e/86f53913.png)
ãŸãã PySideã«ã¯ãµãŒãããŒãã£ã®ã©ã€ãã©ãªãã€ã³ãã£ã³ã°ãæ¢ã«ããã€ãããããšã«ã泚æããŠãã ããã ãããã®1ã€ã¯Qwtãã€ã³ãã£ã³ã°ã§ãã
䜿çšææ
PySide v1.0.8ããã¥ã¡ã³ã
PySide Mobility v0.2.2ããã¥ã¡ã³ã
æ°ããã¹ã¿ã€ã«ã®ä¿¡å·/ã¹ããã
éçºè ãããã¯ãŒã¯ã®PySide
Qt Simulatorã§PySideã¢ããªã±ãŒã·ã§ã³ãå®è¡ãã
PySideãã€ã³ãã£ã³ã°ãžã§ãã¬ãŒã¿ãŒ
PySideãã€ã³ãã£ã³ã°çæãã¥ãŒããªã¢ã«