c++ 違い - PyQt対PySideの比較




ライセンス python (4)

現在、PySideはWindows上で動作しないため、機能が制限されています。 Linuxで開発していて純粋なGPLを避ける必要がある場合、PySideは候補者です。

APIの観点から見ると、私は信号/スロット機能がより「Pythonic」だと感じています。

私は現在、Linux上のQt heavy C ++ / Python環境で多くのアプリケーションを開発し、必要に応じてPC / Macに移植しています。 私はPythonをC ++に組み込み、スタンドアローンのGUIで使用しています。 Qtは、xml解析/イベント処理/ GUI /スレッド化などに使用されます。 今は私のPythonのすべての作業がPyQtにあり、誰もどのようにPySideを見ているのかを見たいと思っていました。 私はそれが自宅にあるので興味があるので、うまくいっていればより多くのコンポーネントをサポートする必要があります。 あなたの経験は何ですか?

私はこれが以前に尋ねられたことを知っていますが、私は会話を復活させたいと思います。


PySideの使用について最近考えていましたが、Py2exeでサポートされているかどうかについての情報は見つかりませんでした。 だからこそ私たちはPyQtを使い続けました。 Windows用に開発する必要がある場合は、良いol 'PyQt :-)を使用する方が安全です


PySide 1.0ベータ版(Qt 4.7.1)には、Windows版のインストーラがあります。 QtDesignerやその他のツールは含まれていません。


Qt / C ++クラスにも同様のインターフェイスがあるかもしれませんが、signal / slot / propertyなどのQt / C ++マクロのインターフェイスは非常に異なります。 1つを別のものに移植することは容易ではありません。 当初は正しい決断を下す方が良いでしょう。

文法とライセンスの違いだけでなく、PythonでQMLプロジェクトを書く上で不可欠な言語バインディングのPyQtの欠点を指摘したいだけです。 これらの相違は、私をPyQtからPySideに至るまで押し進める。

  • qmlRegisterType

    qmlRegisterTypeは、QMLとのランタイムC ++バインディングを作成するために不可欠です。 PySideでは、PySide.QtDeclarativeの一部です。 これはPythonでうまく動作します。

    PyQtでは、qmlRegisterTypeは存在しません。 そして私は別のアプローチを見つけることができませんでした。 私はQMLコンテキストを設定することで簡単な作業ができることを知っています。 しかし、実際にqmlRegisterとQ_INVOKABLEでランタイムバインディングが必要な場合は、PySideが唯一の選択肢だと思います。

  • シボケンVS SIP

    どちらもQt / C ++をPythonプラグインにラップできます。 シボケンにとっては、シンプルでコーディングが少なくて済むと感じています。 エクスポートしたいクラスNAMEを含む型システムxmlを作成するだけです。 Shibokenでは、対象となるクラスの構造について特別なマニュアル記述は必要ありません。

    SIPの場合、より多くの追加のコーディングが必要になります。 C ++ヘッダーのすべてをほぼ再実装するSIPファイルを作成する必要があります。 クラスNAMEだけでなく、対象クラスが持つメソッド詳細も必要です。 C ++クラスがPimpを使用して良い設計であり、その中のすべてのメソッドをエクスポートしたい場合、SIPはすべてのクラスメソッドを自動的にエクスポートする方法を提供する必要があります。 これはまた、SIPヘッダとC ++ヘッダとの間の一貫性を維持するための負担を増大させる。

    しかし、私はQt wikiのShibokenのドキュメントは非常に悪いと誤解を招くと言う必要があります。 Windows上でShibokenを使ってPythonプラグインを作成する場合、必ずしもCMakeを必要としません。 ジェネレータランナーも必要ありません。 私はshibokenを起動するためのWindowsのcmdスクリプトと、ターゲットプラグインをコンパイルするためのqmakeプロを使用します。





c++ python qt pyqt pyside