Python GUI PyQt もっと早く使っておけばよかった
- PyScripter でパスに日本語が入ったスクリプトを編集するとエラーとなる対策
- PyQtで文字数計測ツールつくる。簡単すぎ
- PyQtをUbuntuにインストールしマインドマップをHTMLやWikiに変換するツールをつくる
- PyQt を使って GUIテキストファイル分割ツールをPythonで作成する
Python GUI Spyder と Qt Designer で かんたん GUI 開発
Django で動かしてた、チーム内で利用するユーティリティWebアプリケーションがあったのだが、サーバーが死んでしまった。
サーバーを再度立てることは事情が許さない。
しかしながら、Webアプリケーションをどうしても使いたいユーザーが存在する。
という状況で、ロジックを移植すべく、Python GUIをさわりにいく。
PyQt ではじめるGUIプログラミング
http://www.slideshare.net/RansuiIso/pyqtgui
概要がよくまとまっているので、これ読んどけば良さそう。
。。。ではあるんだけれども、作る”ノリ”みたいなところで得るものがあったので、簡単にまとめておく。
PyQtインストール
ダウンロード
http://www.riverbankcomputing.co.uk/software/pyqt/download
ここから、Pythonのバージョンと、PCのアーキテクチャに合わせたファイルをダウンロード
Qt4系、Qt5系があるようだが、Qt5系は、Python3.x のみ対応のようなので、Qt4を選択した。
インストール
Windows8 x64にインストールしてみる
Pythonのパスを聞かれるので、デフォルトですすむ。
デモが相当充実している。
PyScripter インストール
上記スライドの通り、PyScripter をインストールする。必須ではないが、確かに捗る。
使いやすい!
https://code.google.com/p/pyscripter/
ドキュメントなど
で、どんな”ノリ” を得たかというと、現状、Python で GUIを利用する自分のニーズは、ちょっとしたユーティリティしかないので、そんなに凝ったUIである必要はない。
HTMLを書く程度のイメージで、Python GUIがかけるとうれしい。
そして、実際、そんな感じでかけてしまう!
今日見始めたばかりなので、具体的なことは何もわからないのだが、チュートリアルとクラスリファレンスを順に見ていけば、自分のやりたいレベルのことは、十分事足りる。
Tutorial
http://zetcode.com/tutorials/pyqt4/
画面イメージが貼られているので、やりたいことがすぐわかる!
Class Reference
http://pyqt.sourceforge.net/Docs/PyQt4/classes.html
Qtのオブジェクトが一覧になっているので、すぐに使いたいオブジェクトのAPIリファレンスにたどり着ける!
その他
ドキュメント
http://qt-project.org/doc/qt-4.8/
Wiki
https://wiki.python.org/moin/PyQt
Reference
http://pyqt.sourceforge.net/Docs/PyQt4/
http://pyqt.sourceforge.net/Docs/PyQt5/
ということで、適当に、書いて目的達成
# -*- coding:utf-8 -*- import sys from PyQt4 import QtGui, QtCore class PyQtExample(QtGui.QWidget): def __init__(self): super(PyQtExample, self).__init__() self.initUi() def initUi(self): self.cmbMode = QtGui.QComboBox(self) self.cmbMode.addItems(('Item1','Item2','Item3','Item4','Item5')) self.cmbMode.move(50,50) self.chkTblPrefix = QtGui.QCheckBox(u'CheckBox Title',self) self.chkTblPrefix.move(50,80) self.btnExec = QtGui.QPushButton(u'実行',self) self.btnExec.move(50,110) self.btnExec.clicked.connect(self.doExecute) self.btnClear = QtGui.QPushButton(u'クリア',self) self.btnClear.move(150,110) self.btnClear.clicked.connect(self.doClear) self.txtIn = QtGui.QTextEdit(self) self.txtIn.move(50,160) self.txtOut = QtGui.QTextEdit(self) self.txtOut.move(350,160) self.setGeometry(200, 200, 700, 400) self.show() def doExecute(self, value): self.txtOut.append(self.txtIn.toHtml()) def doClear(self, value): self.txtOut.clear() self.txtIn.clear() def main(): app = QtGui.QApplication(sys.argv) example = PyQtExample() sys.exit(app.exec_()) if __name__ == '__main__': main()
この程度の安っぽい画面なら瞬間的に出来る!
もっと早くから使っとけばよかった。。。