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()
この程度の安っぽい画面なら瞬間的に出来る!
もっと早くから使っとけばよかった。。。