Diary/2015-9-28
PySideでGUIアプリ
最近GUIアプリを作ると便利なんだろうなあというときが...
Pythonで簡単に作れるよ,っていう話を聞いたので試してみた.ステップはこんな感じ.
ちなみに,WindowsでのPythonのインストールはこんな感じで.
- QtDesignerでUIを作る
- 対応するPythonなコードを書く
- py2exeでexe化
- 参考
- QtDesignerでUIを作る
コマンドプロンプトでも何でもいいので,
C:\Python34\Lib\site-packages\PySide\designer.exe
を起動.とりあえず,部品は直観的に置いておけばいい.
部品を置いたら,アクションイベントを追加する.
メニューの"Edit"->"Edit Signals/Slots"を選択してアクションを追加するモードに変更.
アクションを追加したいコンポーネントを選択してドラックすると
アースマークみたいな線が引き出されるので,Dialogまでマウスで線をひっぱると
新しい接続関係が定義できる.
マウスのボタンを離すと,"Configuration Connection"ダイアログが開くので
ここでイベント(左)と呼びたいメソッド(右)の対応づけをする.
右ペインのEditを追加すると,好き勝手にメソッド名を決定できる.
たとえば,↓は,
pushButton_7のclicked()とDialogのinput7()を関連づけている.
↓全部接続を終えたところ.
画面の作成は,これでおしまい.作業ディレクトリを指定して保存する main.ui(241) .
- 対応するPythonなコードを書く
desginer.exeで作った.uiなファイルをPythonコードに変換する.
c:\Python34\Scripts\pyside-uic.exe -o main_ui.py main.ui
とか.生成されたmain_ui.pyは普通にPythonコードなので,
あとはこれを操作するスクリプトを書けばいい.
たとえば,クラスのコンストラクタとmain部分的なものは"お決まり"な感じ.
あとは,QtDesignerで追加したメソッドを粛々と実装していく test.py(234) .
import sys from PySide import QtCore, QtGui from main_ui import Ui_Dialog class CalcDialog(QtGui.QWidget): def __init__(self, parent=None): super(CalcDialog, self).__init__(parent) self.ui = Ui_Dialog() self.ui.setupUi(self) # ずらずらと,designerで追加したメソッドを実装 .... def input0(self): self.input_num(0) def input1(self): self.input_num(1) def input2(self): self.input_num(2) .... if __name__ == '__main__': app = QtGui.QApplication(sys.argv) dlg = CalcDialog() dlg.show() sys.exit(app.exec_())
実装して,python test.pyとかすると,起動する.簡単.
- py2exeでexeにする
このままでもいいのだけど,Windowsアプリ化しておくと人に渡すのが楽かもしれない.
py2exeを使ってexe化する.
py2exeをインストールしていなければ,
pip install py2exe
とかする.
作業ディレクトリに,py2exe用のスクリプト(setup.py)を用意して,
from distutils.core import setup import py2exe from PySide import QtCore, QtGui from main_ui import Ui_Dialog py2exe_options = { "compressed": 1, "optimize": 2, "bundle_files": 3, } setup( options={"py2exe" : py2exe_options}, windows=[{"script" : "test.py"}], )
で,
python setup.py py2exe
で,作業ディレクトリの下にdistフォルダができて,その中に実行ファイルがある.
bunlde_filesの値が1というサイトもあったけど,それだと実行ファイルが起動できなかった.
- とりあえず
たしかに簡単かも...
おまたせ
してしまっている仕事を...