前の関連記事: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 defaults
Python2系のものしかありません。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 件のコメント:
コメントを投稿