LoginSignup
13
11

More than 3 years have passed since last update.

PyQt5 vs. Qt for Python(PySide2)

Posted at

概要

本記事は、12/15 投稿記事 PyQt入門編で調べ切れなかったことについての追加調査結果をまとめます。

具体的には、PyQt5, Qt for python(PySide2) 両者の違いを比較したいと思います。

簡易比較表

以下、Web 上の情報を元に、主な違いを表にまとめてみます。

Category PyQt5 Qt for Python
Vendor Riverbank Computing 社 The Qt Company
License GPLv3
Com.1
LGPLv2.1
GPLv3
Com.1
Python Version 3.5+(3.7.3で確認済) 3.5+
URL https://www.riverbankcomputing.com/software/pyqt/intro https://www.qt.io/qt-for-python
開発開始時期 早い 遅い
シェア 中?
Version up 早くて多い ある程度まとめて?
Document 多い(英語) 少ない(英語)
言語制約 緩め 厳密
QtQuick,QML Full support Full support

解説

ライセンスについては、LGPL が選択できる Qt for Python に分がありますが、PyQt5 は先行して開発した分、アプリケーションやライブラリ、ドキュメントなどが充実しているようです。

API について、 PyQt は Qt のオリジナルにはない独自のクラスを残している事があるようです。言語レベルでの制約は比較的緩めのようです(色々な書き方をしても、比較的安定して動作するようです)。
Qt for Python は過去の縛りが少ないためなのか、Qt の Core クラスをそのまま使えるように配慮するなど、スッキリしたAPIを目指しているようです。
例えば、以下の signal, slot の定義です。

PyQt5
valueChanged = pyqtSignal([dict], [list])

@pyqtSlot(int, str)
def foo(self, arg1, arg2):
    """ C++: void foo(int, QString) """
PySide2
speakNumber = QtCore.Signal(int)

@QtCore.Slot(str)
def saySomeWords(words):
    print words

近年の傾向

数年前までは、Qt for Python(PySide) は PyQt の一部の API をサポートするレベルであり、Python のサポートバージョンも古く、動作が不安定、というような問題もあったようです。
しかし、Qt 開発元の The Qt Company が力を入れてサポートしているため、徐々に差がなくなって来ているようです。

まとめ

まとめると、どちらかが突出してよい、というわけではなさそうです。
個人的見解となりますが、PyQt は、商用利用する必要がない社内評価用アプリケーションなどを作成するのに適しているのではないか、と思っています。なぜなら、過去の豊富な PyQt アプリ・ライブラリ・ドキュメントが利用可能なため、開発スピードも早く済むのではないか、と思います。
一方、Qt for Python は商用利用に適しているかと思われます。PyQt から Qt for Python への移植も比較的楽にできるようなので、PyQt でプロトタイプ作成し、Qt for Python に移植する、という流れが良いかもしれません。


  1. Commercial Licence の略 

13
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
11