PyQt

PyQtは、クロスプラットフォームなGUIツールキットであるQtのPythonバインディングにして、PythonでGUIプログラミングをするときの選択肢の一つである。PyQtの他には、PySide・PyGTK・wxPython・TkinterなどのGUIツールキットが存在する。Qtと同様にPyQtはフリーソフトウェアである。PyQtはPythonのプラグインとして実装されている。 PyQtはイギリスのRiverbank Computing社によって開発されており、GPLと商用ライセンスで提供されているが、LGPLの下では提供されていない。PyQtはクロスプラットフォームなツールキットであり、Windows・Linux・macOSなどをサポートしている。 PyQtは440のクラスと6000以上の関数とメソッドを持つ。代表的なものは以下のとおりである。 充実したGUIウィジェット SQLデータベース (ODBC, MySQL, PostgreSQL, Oracle Database) にアクセスするためのクラス QScintillaとScintillaをベースとしたエディタウィジェット 自動的にデータベースからデータを取り込みウィジェットに表示 XMLのパーサ SVGのサポート Windows上でのActiveXのためのクラス(商用バージョンのみ) 自動的にこれらのバインディングを生成するため、フィル・トンプソンは他のプロジェクトでも使用されるSIPというツールを開発した。 Qtツールキットの所有者であるノキアは、2009年8月にPySideを公開した。PySideはPyQtと同じ機能を持つが、LGPLの下で公開されているという点でPyQtと異なっている。PySideが公開されたのは、Riverbank Computing社とのライセンスに関する合意形成に失敗したためである。 PyQt4は次のPythonモジュールを含んでいる。 QtCore イベントループとQtのシグナルとスロット機構を備えた非GUIクラスを含んでいる。このモジュールは、プラットホームに依存しないようにUnicode・スレッド・マップドファイル・共有メモリ・正規表現などを抽象化する。 QtGui 多くのGUIクラスを含んでいる。これらのクラスはModel View Controller設計パターンに基づいた、たくさんのテーブル・ツリー・リストを含んでいる。また、何千ものアイテムを格納できる、洗練された2Dキャンパスウィジェットを提供する。 QtNetwork UDP・TCPクライアントとサーバを作成するためのモジュールである。このモジュールはFTPの実装・HTTPクライアント・DNSルックアップのためのクラスを含んでいる。ネットワークアプリケーションが簡単に開発できるように作成されている。 QtOpenGL OpenGLを扱うためのモジュールである。 QtSql オープンソースでプロプライエタリなSQLデータベースを扱うためのモジュールである。これはGUIクラスで使用できるデータベーステーブル用の編集可能なデータモデルを含んでいる。また、SQLiteの実装も含んでいる。 QtSvg SVGファイルを表示するためのモジュールである。 QtXml QtのXMLパーサにSAXとDOMのインターフェースを実装するモジュールである。 QtMultimedia 低レベルでマルチメディア機能を実装するためのモジュールである。ソフトウェア開発者は普通phononモジュールを使う。 QtDesigner PyQtを用いてQt Designerを拡張するためのモジュールである。 Qt 一つのモジュールに上記すべてのモジュールに含まれるクラスを統合する。このため、Qtモジュールを読み込んでおけば、あるクラスが含まれているかどうかを心配する必要がなくなる。しかし、一つのモジュールに統合することで、アプリケーションのメモリ使用量を増加させる、Qtフレームワーク全体を読み込まなければならないなどの欠点が生じる。この統合されたモジュールを使用するか、個々のモジュールを使用するかは個人の好みになる。 uic Qt Designerで作られた、XMLファイルを扱うためのモジュールである。これは、XMLファイルの読み込み・表示機能や、後に実行するためにXMLファイルからPythonコードを生成するクラスが含まれている。 #! /usr/bin/env python # -*- coding: utf-8 -*- # # Here we provide the necessary imports. # The basic GUI widgets are located in QtGui module. import sys from PyQt4.QtGui import * # Every PyQt4 application must create an application object. # The application object is located in the QtGui module. a = QApplication(sys.argv) # The QWidget widget is the base class of all user interface objects in PyQt4. # We provide the default constructor for QWidget. The default constructor has no parent. # A widget with no parent is called a window. w = QWidget() w.resize(320, 240) # The resize() method resizes the widget. w.setWindowTitle("Hello, World!") # Here we set the title for our window. w.show() # The show() method displays the widget on the screen. sys.exit(a.exec_()) # Finally, we enter the mainloop of the application. Anki 学習補助ソフトウェア Eric Python IDE Pythonの統合開発環境 Kodos Pythonの正規表現デバッガ Orange データマイニングとデータの可視化のためのフレームワーク qt-recordMyDesktop recordMyDesktopというソフトウェアのQt版 QGIS 地理情報システムのためのソフトウェア Veusz 科学用途の作図ソフトウェア Spyder Pythonの統合開発環境 Leo プログラミング用のエディタ Ninja-IDE Pythonの統合開発環境 Calibre 電子書籍ソフトウェア TortoiseHG Mercurialのグラフィカルなインタフェース PySide PyGTK wxPython Tkinter ^ https://www.riverbankcomputing.com/news ^ “PyQt4 Download”. Riverbankcomputing (2010年). 2010年4月19日閲覧。 ^ “Riverbank | Software | PyQt | License”. Riverbankcomputing.co.uk. 2009年9月3日閲覧。 ^ a b “Riverbank | Software | PyQt | What is PyQt?”. Riverbankcomputing.co.uk. 2010年4月15日閲覧。 ^ “PyQt v4 - Python Bindings for Qt v4”. Riverbankcomputing. 2010年4月17日閲覧。 ^ PythonInfo Wiki ^ “PySide has been released – PySide – Python for Qt”. Pyside.org (2009年8月18日). 2009年9月3日閲覧。 ^ “FAQ – PySide – Python for Qt”. Pyside.org. 2009年9月3日閲覧。 Summerfield, Mark (October 28, 2007), Rapid GUI Programming with Python and Qt (Covers PyQt4) (1st ed.), Prentice Hall, pp. 648, ISBN 978-0-13-235418-9, http://www.qtrac.eu/pyqtbook.html  Rempt, Boudewijn (2002), GUI Programming with Python: QT Edition (Covers PyQt3), OpenDocs, http://www.commandprompt.com/community/pyqt/  公式ウェブサイト PyQt5 Tutorial PyQt and PyKDE community Wiki PyQt Tutorial Tutorials Tutorial