Python GUI PyQt もっと早く使っておけばよかった

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にインストールしてみる

pyqt_install01

Pythonのパスを聞かれるので、デフォルトですすむ。

pyqt_install02

デモが相当充実している。

pyqt_sample02

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/

ということで、適当に、書いて目的達成

  1. # -*- coding:utf-8 -*-
  2. import sys
  3. from PyQt4 import QtGui, QtCore
  4.  
  5. class PyQtExample(QtGui.QWidget):
  6.  
  7. def __init__(self):
  8. super(PyQtExample, self).__init__()
  9. self.initUi()
  10.  
  11. def initUi(self):
  12. self.cmbMode = QtGui.QComboBox(self)
  13. self.cmbMode.addItems(('Item1','Item2','Item3','Item4','Item5'))
  14. self.cmbMode.move(50,50)
  15.  
  16. self.chkTblPrefix = QtGui.QCheckBox(u'CheckBox Title',self)
  17. self.chkTblPrefix.move(50,80)
  18.  
  19. self.btnExec = QtGui.QPushButton(u'実行',self)
  20. self.btnExec.move(50,110)
  21. self.btnExec.clicked.connect(self.doExecute)
  22.  
  23. self.btnClear = QtGui.QPushButton(u'クリア',self)
  24. self.btnClear.move(150,110)
  25. self.btnClear.clicked.connect(self.doClear)
  26.  
  27. self.txtIn = QtGui.QTextEdit(self)
  28. self.txtIn.move(50,160)
  29.  
  30. self.txtOut = QtGui.QTextEdit(self)
  31. self.txtOut.move(350,160)
  32.  
  33. self.setGeometry(200, 200, 700, 400)
  34. self.show()
  35.  
  36. def doExecute(self, value):
  37. self.txtOut.append(self.txtIn.toHtml())
  38.  
  39. def doClear(self, value):
  40. self.txtOut.clear()
  41. self.txtIn.clear()
  42.  
  43. def main():
  44. app = QtGui.QApplication(sys.argv)
  45. example = PyQtExample()
  46. sys.exit(app.exec_())
  47.  
  48. if __name__ == '__main__':
  49. main()

この程度の安っぽい画面なら瞬間的に出来る!

pyqt_sample

もっと早くから使っとけばよかった。。。


Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です