PyQt

PyQt
Qt Designer
開発元 Riverbank Computing
最新版
6.6.1 / 2023年12月4日 (5か月前) (2023-12-04)[1]
プログラミング
言語
C++/Python[2]
対応OS クロスプラットフォーム
ライセンス GNU GPL and commercial
公式サイト riverbankcomputing.com
テンプレートを表示

PyQtは、クロスプラットフォームGUIツールキットであるQtPythonバインディングにして、PythonでGUIプログラミングをするときの選択肢の一つである。PyQtの他には、PySidePyGTKwxPythonTkinterなどのGUIツールキットが存在する。Qtと同様にPyQtはフリーソフトウェアである。PyQtはPythonのプラグインとして実装されている。

PyQtはイギリスRiverbank Computing社によって開発されており、GPLと商用ライセンスで提供されているが、LGPLの下では提供されていない[3]。PyQtはクロスプラットフォームなツールキットであり、WindowsLinuxmacOSなどをサポートしている[4]

PyQtは440のクラスと6000以上の関数とメソッドを持つ。代表的なものは以下のとおりである[5]

  • 充実したGUIウィジェット
  • SQLデータベース (ODBC, MySQL, PostgreSQL, Oracle Database) にアクセスするためのクラス
  • QScintillaとScintillaをベースとしたエディタウィジェット
  • 自動的にデータベースからデータを取り込みウィジェットに表示
  • XMLのパーサ
  • SVGのサポート
  • Windows上でのActiveXのためのクラス(商用バージョンのみ[6])

自動的にこれらのバインディングを生成するため、フィル・トンプソンは他のプロジェクトでも使用されるSIPというツールを開発した。

Qtツールキットの所有者であるノキアは、2009年8月にPySideを公開した。PySideはPyQtと同じ機能を持つが、LGPLの下で公開されているという点でPyQtと異なっている[7]。PySideが公開されたのは、Riverbank Computing社とのライセンスに関する合意形成に失敗したためである[8]

PyQtの別のロゴ

PyQtの構成

PyQt4は次のPythonモジュールを含んでいる。

QtCore
イベントループとQtのシグナルとスロット機構を備えた非GUIクラスを含んでいる。このモジュールは、プラットホームに依存しないようにUnicode・スレッド・マップドファイル共有メモリ正規表現などを抽象化する。
QtGui
多くのGUIクラスを含んでいる。これらのクラスはModel View Controller設計パターンに基づいた、たくさんのテーブル・ツリー・リストを含んでいる。また、何千ものアイテムを格納できる、洗練された2Dキャンパスウィジェットを提供する。
QtNetwork
UDPTCPクライアントとサーバを作成するためのモジュールである。このモジュールはFTPの実装・HTTPクライアント・DNSルックアップのためのクラスを含んでいる。ネットワークアプリケーションが簡単に開発できるように作成されている。
QtOpenGL
OpenGLを扱うためのモジュールである。
QtSql
オープンソースでプロプライエタリSQLデータベースを扱うためのモジュールである。これはGUIクラスで使用できるデータベーステーブル用の編集可能なデータモデルを含んでいる。また、SQLiteの実装も含んでいる。
QtSvg
SVGファイルを表示するためのモジュールである。
QtXml
QtのXMLパーサにSAXDOMのインターフェースを実装するモジュールである。
QtMultimedia
低レベルでマルチメディア機能を実装するためのモジュールである。ソフトウェア開発者は普通phononモジュールを使う。
QtDesigner
PyQtを用いてQt Designerを拡張するためのモジュールである。
Qt
一つのモジュールに上記すべてのモジュールに含まれるクラスを統合する。このため、Qtモジュールを読み込んでおけば、あるクラスが含まれているかどうかを心配する必要がなくなる。しかし、一つのモジュールに統合することで、アプリケーションのメモリ使用量を増加させる、Qtフレームワーク全体を読み込まなければならないなどの欠点が生じる。この統合されたモジュールを使用するか、個々のモジュールを使用するかは個人の好みになる。
uic
Qt Designerで作られた、XMLファイルを扱うためのモジュールである。これは、XMLファイルの読み込み・表示機能や、後に実行するためにXMLファイルからPythonコードを生成するクラスが含まれている[4]

Hello World

KDE Plasma 4での実行結果
#! /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.

PyQtを用いたソフトウェア

関連項目

出典

  1. ^ https://www.riverbankcomputing.com/news
  2. ^ “PyQt4 Download”. Riverbankcomputing (2010年). 2010年4月19日閲覧。
  3. ^ “Riverbank | Software | PyQt | License”. Riverbankcomputing.co.uk. 2009年9月3日閲覧。
  4. ^ a b “Riverbank | Software | PyQt | What is PyQt?”. Riverbankcomputing.co.uk. 2010年4月15日閲覧。
  5. ^ “PyQt v4 - Python Bindings for Qt v4”. Riverbankcomputing. 2010年4月17日閲覧。
  6. ^ PythonInfo Wiki
  7. ^ “PySide has been released – PySide – Python for Qt”. Pyside.org (2009年8月18日). 2009年9月3日閲覧。
  8. ^ “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
技術
  • Meta-object System
  • Phonon
  • QML
  • QtScript(英語版)
  • Qt Quick(英語版)
  • Qt Style Sheets(英語版)
  • Signals and slots(英語版)
ツール
バインディング
  • PHP-Qt(英語版)
  • PyQt
  • PySide
  • QtRuby(英語版)
  • Qt Jambi(英語版)
関連項目
低レベル
高レベル
AmigaOS対応
  • BOOPSI(英語版)
  • Magic User Interface(英語版)
  • ReAction GUI(英語版)
  • Zune(英語版)
Mac OS/macOS対応
  • Cocoa (API)
  • MacApp(英語版)
  • MacZoop(英語版)
  • PowerPlant(英語版)
Windows対応
X11下のUnix対応
  • Athena/Xaw(英語版)
  • InterViews(英語版)
  • LessTif
  • Motif
言語別
クロスプラットフォーム
CLI
  • Gtk#
  • Moonlight(英語版)
  • Tao(英語版)
C/C++
  • CEGUI(英語版)
  • Component Library for Cross Platform
  • FLTK
  • FOX toolkit(英語版)
  • OpenGL User Interface Library(英語版)
  • GTK
  • Juce(英語版)
  • Qt
  • Wt(英語版)
  • Tk
  • TnFOX(英語版)
  • Ultimate++(英語版)
  • Visual Component Framework(英語版)
  • wxWidgets
  • YAAF(英語版)
  • XForms
  • XVT(英語版)
Objective-C
Flash
Java
デスクトップ
ウェブ
JavaScript
Common Lisp
Object Pascal
Perl
  • WxPerl(英語版)
  • Perl/Tk
PHP
  • PHP-GTK(英語版)
  • PHP-Qt(英語版)
  • WxPHP(英語版)
Python
Ruby
  • Shoes
  • QtRuby(英語版)
XML
  • Ample SDK(英語版)
  • CougarXML(英語版)
  • GladeXML
  • Lively Kernel(英語版)
  • Pyjamas(英語版)
  • Rialto Toolkit(英語版)
  • XAML
  • XML User Interface(英語版)
  • XUL
  • Wt(英語版)
  • 一覧記事一覧(英語版)
  • カテゴリカテゴリ
実装
ウィジェット・ツールキット
フレームワーク
統合開発環境(専用)
  • Boa
  • IDLE
  • Stani's Python Editor(英語版)
  • PyCharm
総合開発環境(汎用)
ライブラリ
  • カテゴリ カテゴリ
    • Python
    • ライブラリ
  • コモンズ コモンズ
  • ウィキブックス ウィキブックス
  • ポータル Portal:コンピュータ