PyQt

クロスプラットフォームなGUIツールキットであるQtのPythonバインディング

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

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

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/ 

外部リンク

編集
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy