Py
Qtは、
クロスプラットフォームなGUIツールキットである
Qtの
Pythonバインディングです。
PythonでGUIプログラミングを行う際の有力な選択肢の一つであり、PySide、PyGTK、wx
Python、Tkinterといった他のGUIツールキットと並び、広く利用されています。
Qtと同様に、Py
Qtもまた自由ソフトウェアとして提供されており、
Pythonの
プラグインとして実装されています。
開発は
イギリスのRiverbank Computing社によって行われ、GPLと商用
ライセンスで提供されています。ただし、LGPL下での提供はされていません。Py
Qtは、Windows、
Linux、macOSといった主要な
オペレーティングシステムをサポートしており、
クロスプラットフォームな開発を容易にします。
Py
Qtは、440の
クラスと6000以上の関数、メソッドを備えており、豊富な機能を提供します。特に、GUIウィジェット、
SQLデータベースアクセス、エディタウィジェット、データ表示、XMLパーサ、SVGサポートといった機能は、多くの開発者にとって不可欠なものです。
PyQtの構成
Py
Qt4は、複数の
Pythonモジュールで構成されており、それぞれが特定の機能を提供しています。
QtCore: イベントループ、Qtのシグナルとスロット機構、Unicode、スレッド、マップドファイル、共有メモリ、正規表現といった非GUIクラスが含まれています。プラットフォームに依存しない抽象化を提供します。
QtGui: GUI
クラスを多数含んでおり、Model View Controller設計パターンに基づいたテーブル、ツリー、リストを提供します。また、高度な2Dキャンパスウィジェットも利用できます。
QtNetwork: UDP、TCPクライアント、サーバを作成するためのモジュールで、FTP、HTTPクライアント、DNSルックアップなどの機能を提供します。
QtOpenGL:
OpenGLを扱うためのモジュールです。
QtSql: オープンソースおよびプロプライエタリなSQLデータベースを扱うためのモジュールで、GUIクラスで使用可能なデータモデルを提供します。
QtSvg: SVGファイルを表示するためのモジュールです。
QtXml: QtのXMLパーサにSAXとDOMインターフェースを実装するモジュールです。
QtMultimedia: マルチメディア機能を実装するためのモジュールで、通常はphononモジュールが利用されます。
QtDesigner: PyQtでQt Designerを拡張するためのモジュールです。
Qt: 上記すべてのモジュールの
クラスを統合したモジュールで、必要な
クラスがどのモジュールにあるかを気にする必要がなくなります。ただし、アプリケーションのメモリ使用量を増加させる可能性があります。
uic: Qt Designerで作成されたXMLファイルを扱うモジュールで、XMLファイルの読み込み、表示、Pythonコード生成を行います。
PyQtとPySide
Qtツールキットの所有者であるノキアは、2009年8月にPySideを公開しました。PySideはPyQtと同様の機能を持っていますが、LGPL下で公開されている点がPyQtと異なります。PySideの公開は、Riverbank Computing社とのライセンスに関する合意形成がうまくいかなかったことが原因です。
PyQtを利用したソフトウェア
PyQtは、多くの著名なソフトウェアで利用されています。以下はその一部です。
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
wx
Python
Tkinter
推薦文献
Summerfield, Mark (October 28, 2007), Rapid GUI Programming with
Python and
Qt (Covers Py
Qt4) (1st ed.), Prentice Hall
Rempt, Boudewijn (2002), GUI Programming with Python: QT Edition (Covers PyQt3), OpenDocs
外部リンク
公式ウェブサイト
PyQt5 Tutorial
QtAndPy
KDE'>Py
Qt and Py
KDE community Wiki
PyQt Tutorial
Qt5/tutorials.html'>Tutorials
*
Tutorial