前の関連記事:linuxBean14.04(94)Eclipse4.5.1からGistに投稿するプラグインGitHub Mylyn Connectorのインストール
LibreOffice5(20)anaconda3のtkinterモジュールを使うでPythonでGUIプログラミングするためのツールについて調べている途中でPySideを知ったのでlinuxBean14.04(72)Anacondaで科学技術系Pythonパッケージを一括インストールするのAnaconda3にインストールしてみます。
(2016.1.10追記。この記事を書いてからAnaconda3にはデフォルトでPyQt4がインストールされていたことを知りました。ということでPySideは使わずPyQt4を使うことにしました。linuxBean14.04(96)Anaconda3のPyQtモジュールを使う参照。)
Anaconda CloudからAnaconda3のPython3.4にPysideをインストール
まずはcondaでPython3用のPysideのパッケージを探します。
pq@pq-VirtualBox:~$ conda search pyside Fetching package metadata: .... pyside 1.1.2 py27_0 defaults 1.1.2 py26_0 defaults 1.2.0 py27_0 defaults 1.2.1 py27_0 defaultsPython2系のものしかありません。
Python3 & PySide - Google グループ
このQ&Aをみつけてpyzo-pysideに調べたところAnaconda Cloudに見つけました。
conda install -c https://conda.anaconda.org/pyzo pyside-pyzo
とりあえずこれでまずPython3.4にインストールしました。
pq@pq-VirtualBox:~$ conda install -c https://conda.anaconda.org/pyzo pyside-pyzoFetching package metadata: ...... Solving package specifications: .............. Package plan for installation in environment /home/pq/anaconda3: The following packages will be downloaded: package | build ---------------------------|----------------- openssl-1.0.2d | 0 2.6 MB python-3.4.3 | 2 14.7 MB conda-env-2.4.5 | py34_0 25 KB pyside-pyzo-1.2.1 | py34_6 29.7 MB requests-2.9.0 | py34_0 647 KB setuptools-19.1.1 | py34_0 349 KB conda-3.19.0 | py34_0 180 KB ------------------------------------------------------------ Total: 48.1 MB The following NEW packages will be INSTALLED: pyside-pyzo: 1.2.1-py34_6 The following packages will be UPDATED: conda: 3.18.1-py34_0 --> 3.19.0-py34_0 conda-env: 2.4.2-py34_0 --> 2.4.5-py34_0 openssl: 1.0.1k-1 --> 1.0.2d-0 python: 3.4.3-1 --> 3.4.3-2 requests: 2.8.0-py34_0 --> 2.9.0-py34_0 setuptools: 18.3.2-py34_0 --> 19.1.1-py34_0 Proceed ([y]/n)?
インストール後TerminalでHello World in PySide/ja - Qt Wikiの例をやってみました。
pq@pq-VirtualBox:~$ /home/pq/anaconda3/bin/python Python 3.4.3 |Anaconda 2.3.0 (32-bit)| (default, Oct 19 2015, 21:52:31) [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> from PySide.QtCore import * >>> from PySide.QtGui import * >>> app = QApplication(sys.argv) >>> label = QLabel("Hello World") >>> label.show() >>> app.exec_()これでHelloWorldが表示されました。
閉じるボタンをクリックするにはウィンドウの横幅を広げます。
Anaconda3のPython3.3.5にPysideをインストール
まずlinuxBean14.04(86)AnacondaのパッケージをLibreOfficeマクロで使うで作成したpy335の環境にインストールします。
conda env listで環境名を確認したあとsource activate py335でpy335に切り替えてpysideをインストールしました。
pq@pq-VirtualBox:~$ conda env list # conda environments: # py335 /home/pq/anaconda3/envs/py335 root * /home/pq/anaconda3 pq@pq-VirtualBox:~$ source activate py335 discarding /home/pq/anaconda3/bin from PATH prepending /home/pq/anaconda3/envs/py335/bin to PATH (py335)pq@pq-VirtualBox:~$ conda install -c https://conda.anaconda.org/pyzo pyside-pyzo Fetching package metadata: ...... Solving package specifications: .............. Package plan for installation in environment /home/pq/anaconda3/envs/py335: The following packages will be downloaded: package | build ---------------------------|----------------- pyside-pyzo-1.2.1 | py33_6 29.8 MB setuptools-19.1.1 | py33_0 358 KB ------------------------------------------------------------ Total: 30.1 MB The following NEW packages will be INSTALLED: pyside-pyzo: 1.2.1-py33_6 wheel: 0.26.0-py33_1 The following packages will be UPDATED: pip: 7.0.3-py33_0 --> 7.1.2-py33_0 setuptools: 17.1.1-py33_0 --> 19.1.1-py33_0 Proceed ([y]/n)?インストール後TerminalからAnaconda3のpythonを起動してHelloWorldの表示ができました。
LibreOffice5のマクロモードでPysideを使ってみる
LibreOfficeのバンドルPythonをインタープリタにしてもHelloWorldの表示ができたので今度はLibreOffieceのマクロから呼び出してみます。
LibreOffice5(20)anaconda3のtkinterモジュールを使うでやったようにマクロモードではsys.argvは何も入っていないので適当な文字列のリストを入れました。
def pyside_test(): from PySide.QtGui import QApplication, QLabel app = QApplication(["macro"]) label = QLabel("Hello World") label.show() app.exec_()このpyside_test()をLibreOfficeのマクロセレクターから呼び出すとノンモダルダイアログとしてHelloWorldを表示できました。
しかしLibreOfficeを再起動しないかぎり1回しか実行できません。
2回目に実行すると A QApplication instance already exists.と言われてしまいます。
HelloWorldを閉じても同じことです。
IPython - User - [IPython-User] simple iPython example raises exception on sys.exit()
ここに書いてあるようにQApplicationがすでに存在しているか確認するとHelloWorldウィンドウを閉じると再実行できるようになりました。
def pyside_test(): from PySide.QtGui import QApplication, QLabel app = QApplication.instance() if not app: app = QApplication(["macro"]) label = QLabel("Hello World") label.show() app.exec_()しかしHelloWorldウィンドウを閉じずに再度同じpyside_test()を呼び出すとLibreOfficeがフリーズしました。
もうちょっと研究の余地がありそうです。
参考にしたサイト
Category:LanguageBindings::PySideJapanese - Qt Wiki
PySideの解説。
Python3 & PySide - Google グループ
Anaconda3でPySideをインストールする方法。
Anaconda Cloud
PySideのcondaパッケージ。
Hello World in PySide/ja - Qt Wiki
PySideのHelloWorldの例。
IPython - User - [IPython-User] simple iPython example raises exception on sys.exit()
A QApplication instance already exists.の解決方法。
0 件のコメント:
コメントを投稿