トップ 一覧 Farm 検索 ヘルプ RSS ログイン

Diary/2015-9-28の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!PySideでGUIアプリ
最近GUIアプリを作ると便利なんだろうなあというときが...

Pythonで簡単に作れるよ,っていう話を聞いたので試してみた.ステップはこんな感じ.

ちなみに,WindowsでのPythonのインストールは[[こんな感じで|Diary/2015-9-2]].



+ QtDesignerでUIを作る

+ 対応するPythonなコードを書く

+ py2exeでexe化



::参考

* [f-tools' blog: はじめての PySide with Qt Designer|http://blog.f-tools.jp/2012/02/pyside-with-qt-designer.html]



::QtDesignerでUIを作る

コマンドプロンプトでも何でもいいので,

 C:\Python34\Lib\site-packages\PySide\designer.exe

を起動.とりあえず,部品は直観的に置いておけばいい.

{{ref_image designer_0.PNG}}

部品を置いたら,アクションイベントを追加する.

メニューの"Edit"->"Edit Signals/Slots"を選択してアクションを追加するモードに変更.

アクションを追加したいコンポーネントを選択してドラックすると

アースマークみたいな線が引き出されるので,Dialogまでマウスで線をひっぱると

新しい接続関係が定義できる.

{{ref_image designer_2.PNG}}

マウスのボタンを離すと,"Configuration Connection"ダイアログが開くので

ここでイベント(左)と呼びたいメソッド(右)の対応づけをする.

右ペインのEditを追加すると,好き勝手にメソッド名を決定できる.

たとえば,↓は,

{{ref_image designer_3.PNG}}

pushButton_7のclicked()とDialogのinput7()を関連づけている.

↓全部接続を終えたところ.

{{ref_image designer_4.PNG}}

画面の作成は,これでおしまい.作業ディレクトリを指定して保存する {{ref main.ui}} .



::対応するPythonなコードを書く

desginer.exeで作った.uiなファイルをPythonコードに変換する.

 c:\Python34\Scripts\pyside-uic.exe -o main_ui.py main.ui

とか.生成されたmain_ui.pyは普通にPythonコードなので,

あとはこれを操作するスクリプトを書けばいい.

たとえば,クラスのコンストラクタとmain部分的なものは"お決まり"な感じ.

あとは,QtDesignerで追加したメソッドを粛々と実装していく {{ref test.py}} .

 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とかすると,起動する.簡単.

{{ref_image calc.PNG}}



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



::とりあえず

たしかに簡単かも...



!おまたせ
してしまっている仕事を...