で
おかげで、彼らは非常によく一緒に行きます。私はかなりうまくすべてを組み合わせたpython/qml/js/openglプログラムを書いた。それはQt4.7とPySideで行われました。あなただけのQMLを使用している場合
は、あなたがにさらされる必要がありますQtの量を最小限に抑えることができます(ただし、いつものように、より多くの知識は、あなたがより強力になります)。基本的に、qdeclarativeviewを取得すると、Qtの作業はシグナル/スロットの処理とは別に行われます。これはPySideの喜びです。私は、PythonとQMLを使ってすぐに生産性を上げることができます。必要に応じて、Qt側のことを心配する必要はありません。
経験から、私は自分自身の心の中でPythonとQMLの間の境界を明確にすることをお勧めします。 QMLをGUIロジックに非常に制限しました。これは非常にうまくいきます。実質的にQMLはインタフェースが入力にどのように応答するかを処理し、次に信号をメインプログラムに戻します。 guiとプログラムの残りの部分との間の非常に基本的な、paredされたインターフェースを作成するような、ちょうどハイレベルのロジックを伝えるようなものです(例えば、クリックを返すのではなく、処理をオンにすると、guiはその変更をレンダリングする方法を扱います)。私の場合、これは私のMVCフレームワークにまっすぐ接続しましたが、好きなようにすることができます。
すべてこの中にかかわらず、一つの大きな脂肪の注意点があります。 PySideの開発はむしろ失速しており、現在Qt5とそのすべてのQML改善の良さをサポートしていません。どのようにサポートすべきかについては様々な議論がありましたが、あまり実際のコードはコミットされていません。
私はPyQtはをQt5をサポートして信じているが、デュアルGPLまたは商用(PySideはLGPLであるので、クローズドソースコードで使用することができます)のいずれかとのライセンス。私はPyQtの経験がありません。それ以外のPySideはお互いの交換でほぼ降下しています。
編集:私はMVVMとしてそれを使用して話しているように思え。
編集(制限事項は問いません):QtはPySideとPyQtを通して公開されています。これは、あなたがCのようにPythonでエクステンションを書くことができることを意味します。マウススクロールイベントをキャプチャしたウィジェットを作成して、Flickableからスクロールできるようにしました。これはPythonで作成されたQML要素でしたが、Pythonから読み込む必要もありました。私は、QMLドキュメントの内部からロードできるエクステンションをどのように作成するのかについてはほとんど考えていませんでした。もちろん、メインコードにスタンドアロンのC拡張を書くことも可能です。そのため、常にそのオプションがあります。
なぜそれをJSに保存しないでください.1つの動的言語で十分です。さらに、JSはPythonよりも優れたパフォーマンスを備えています。 Qtの場合、QMLコンポーネントをバインドするためにQMLとJSを拡張するにはC++が必要です。この文脈でのPythonは冗長なツールです。 – dtech
QMLをPythonコンポーネントで拡張することができます。冗長引数によって、アセンブラを除くすべての言語は冗長です。 JSとPythonは明らかに同等ではありません。 QMLの外で深刻なプログラムロジックを持つことは、潜在的に非常に良いことです。 –
@ddriver私が質問したように、いくつかの特定の問題についてOSとの通信を確立するために、いくつかの基本言語が必要です。だから、私は少し親しみやすいようにPythonを好む。 – inblueswithu