web-dev-qa-db-ja.com

PythonはQML(Qt-Quick)でうまくいきますか?

私はQt-Quickの初心者です。 QMLの基礎となるQtについては知りません。また、QtとQMLの両方でサポートされる主な言語であるC++についてもよく知りません。 JSはQMLレイヤー自体で多くのロジックを実行できることを知っています。ただし、OSとの対話が必要な場合は、基本言語を使用する必要があります。私はPythonに慣れているので、「QML-JS-Python」の組み合わせを計画しています。

だから、私の質問:

  1. 高度なアプリケーションとゲーム開発の場合Python&Qt-Quickはうまく連携していますか?
  2. 私の組み合わせトリオ(QML-JS-Python)はこれで十分ですか?
  3. また、QMLからPythonと結合するためのQt for App開発を学ぶ必要がありますか?
  4. Qust 3が「はい」の場合、完全なQtまたはPythonとQMLの間の通信ドアとして機能する数行のコードのみを学習する必要がありますか?

私がこれらの質問をするのがおかしいと申し訳ありません。しかし、私は提案や意見を受けたいと思います。

編集:この組み合わせの制限事項QML-JS-Python

前もって感謝します

28
inblueswithu

概念的なレベルでは、それらは非常にうまく調和しています。すべてをかなりうまく組み合わせるpython/qml/js/openglプログラムを作成しました。それはQt4.7とPySideでした。

QMLだけを使用している場合は、公開する必要があるQtの量を最小限に抑えることができます(ただし、いつものように、知識が増えると強力になります)。基本的に、qdeclarativeviewを取得すると、Qtの作業は信号/スロットの処理とは別に行われます。これはPySideでの喜びです。 PythonとQMLを使用することで、Qtの側面をあまり気にせず、必要に応じてそれを取得することなく、すばやく生産性を高めることができます。

経験から、私はPythonとQMLの間の境界を明確にすることをお勧めします。QMLをGUIロジックに非常に限定しました。これは非常にうまく機能します。実際、QMLはインターフェースは入力に応答し、信号をメインプログラムに送り返します。これは、GUIとプログラムの残りの部分との間に非常に基本的な削減されたインターフェースを作成するのと少し似ています。 、クリックを送り返すと、たとえば「処理をオンにする」などの信号が送り返され、GUIはその変更をレンダリングする方法を処理します。私の場合、これはMVCフレームワークに直接接続されていますが、好きなようにしてください。

ただし、これには大きな脂肪の警告が1つあります。 PySideの開発はかなり行き詰まり、現在Qt5とそのすべてのQML改善の善し悪しをサポートしていません。それがどのようにサポートされるべきかについて様々な議論がありましたが、実際のコードはあまりコミットされていません。

PyQtはQt5をサポートしていると思いますが、GPLまたは商用としてデュアルライセンスされています(PySideはLGPLなので、クローズドソースコードで使用できます)。それ以外にPyQtの経験はありません。PySideがほぼ相互に代わるものになっているのです。

[〜#〜] mvvm [〜#〜] として使用することについて話しているようです。

(制限の質問):Qt全体がPySideとPyQtを通じて公開されます。つまり、Cと同じようにPythonで拡張機能を記述できます。マウスのスクロールイベントをキャプチャしてFlickableからスクロールを盗むことができるウィジェットを作成しました。これはPythonで作成されたQML要素でした、Pythonからもロードする必要がありましたが、QMLドキュメント内からロードできる拡張を作成する方法を完全に理解できませんでした。もちろん、メインコードにスタンドアロンのC拡張を作成することもできます。そのため、常にそのオプションは常にあります。

29
Henry Gomersall

2016年4月現在、PySideは now がQt Companyによって正式にサポートされています。

公式ホームページは here です。 LGPLライセンスはオプションであり、プロジェクトが最初に作成された主な理由であると思われます。

6
kashiraja