2020-11-13

Python の Qt バインディング

Qt は フィンランドの Qt Group (The Qt Company) が開発する GUI ツールキット(フレームワーク)で、様々な OS 上で利用することができます。ライセンスはオープンソース版と商用版があり、オープンソース版のライセンスは LGPL および GPL です。商用版を購入すると Qt Commercial License の元でソフトウェアを開発し、プロプライエタリなアプリとして配布することができます [1]

Qt は C++ で記述されていますが、他のプログラミング言語のバインディングも開発されていて、C++ 以外のプログラミング言語から Qt を利用することもできます。もちろん、Python からも Qt を利用することができます。

二つの Python バインディング

Python で Qt を利用するには、PyQt と PySide の二種類のバインディングを利用できます。

PyQt

PyQt はイギリスの Riverbank Computing 社によって開発されている Qt の Python バインディングです。GPL と 商用ライセンスで提供されていますが、LPGL では提供されていません。

PySide

PySide は 2015 年に開発が始まった後発のプロジェクトです。ライセンスは LPGL で配布され、The Qt Company がこのプロジェクトを正式にサポートしています [3]

どちらを使うか?

PyQt と PySide のどちらプロジェクトも開発か続いています。双方の機能差はさておき、オープンソースのプロジェクトである限り、好きな方を採用すれば良いと思います。しかし、開発した成果を商用利用する場合には少し注意が必要です。ソースコードの開示が、会社の知的財産のポリシーと対立することになる可能性があるからです。PyQt を利用している場合は、商用ライセンスを購入しなければならなくなるかもしれません。

これから Qt を利用するのであれば、ライセンスが緩い LGPL を採用している PySide を使ってみるのが無難です。

オープンソースのライセンスについて、知ったかぶりをして説明するのは間違いの元です。LGPL について簡潔に説明されているサイトを下記に紹介します。

Hello World

念のため Hello World のプログラムで、PySide と PyQt を利用したサンプルを作ってみました。しかし、このように単純なプログラムで違いを確認するには無理があり、インポートするパッケージ名が少々異なる以外は実行結果を含め、差異がありませんでした。

使用した OS は以下の通りです。

Fedora Workstation 33 x86_64

まず、PySide2 を利用した例です。

hello_qt.py(PySide2 を利用)

次が、PyQt5 を利用した例です。

hello_qt_2.py(PyQt5 を利用)

上記、どちらを実行しても同じなのですが、ここでは hello_qt.py を実行した結果を示しました。

hello_qt.py の実行例

今後、Python で Qt を利用したアプリの作成について、特に Linux と Windows を対象にしたパッケージ化について紹介していく予定です。

参考サイト

  1. Qtの機能
  2. PySide FAQ/ja - Qt Wiki
  3. Qt for Python - Qt Wiki

ブログランキング・にほんブログ村へ
にほんブログ村

0 件のコメント: