Help us understand the problem. What is going on with this article?

PyQt5 vs. Qt for Python(PySide2)

概要

本記事は、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 の略 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした