トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

Diary/2015-9-28

PySideでGUIアプリ

最近GUIアプリを作ると便利なんだろうなあというときが...
Pythonで簡単に作れるよ,っていう話を聞いたので試してみた.ステップはこんな感じ.
ちなみに,WindowsでのPythonのインストールはこんな感じで

  1. QtDesignerでUIを作る
  2. 対応するPythonなコードを書く
  3. 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(228) .

対応する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(216) .

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というサイトもあったけど,それだと実行ファイルが起動できなかった.

とりあえず

たしかに簡単かも...

おまたせ

してしまっている仕事を...