Shiboken

Python バインディングを書いてみよう

Published Sunday October 28th, 2018 | Leave a comment
Posted in Qt for Python | Tags: ,

この記事は The Qt Blog の Write your own Python bindings を翻訳したものです。 執筆: Alexandru, 2018年05月31日 こんにちは。 前回の記事では Qt ライブラリの Python バインディングを生成する方法について簡単に紹介しました。 今回は、自分のプロジェクトでバインディングを作る方法をちら見せしたいと思います。 Qt for Python には Shiboken というバインディング生成ツールが含まれることになりました。 以下の説明を読んでいただくことで、簡単な C++ のライブラリから Python バインディングが生成する方法を理解することができるでしょう。みなさんがお持ちのカスタムライブラリも、この手法でバインディング化していただけたらいいなと思っています。 Qt 関連の様々なプロジェクト同様、Shiboken に対するコントリビューションも大歓迎です。みんなの幸せにつながる改善をお待ちしております。 ライブラリのサンプル 今回の記事では、あまり中身のない Universe と呼ばれるカスタムライブラリを使用します。このライブラリは Icecream と Truck という2つのクラスを提供します。 アイスクリームには様々な味があります。トラックは近所の子供たちにアイスクリームを配達するための乗り物です。とっても簡単ですね? このクラスを Python から使いたいわけです。例えば、新しい味のアイスクリームを発明したり、配達が問題なく完了したかを確認したいと思います。 というわけで、これから Icecream と Truck の Python バインディングを作って、自分の Python […]

Read More

Qt for Python: 舞台裏

Published Saturday September 22nd, 2018 | Leave a comment
Posted in Qt for Python | Tags: , , ,

この記事は The Qt Blog の Qt for Python: under the hood を翻訳したものです。 執筆: Cristián, 2018年05月24日 本日は、「Qt for Python バインディング」の生成プロセスについて紹介したいと思います。 以下の図は The Qt Company が PySide2 モジュールを提供する際の一般的なプロセスを示しています。 PySide プロジェクトが 2009 年に立ち上がった際に当時のチームは Qt の C++ のヘッダファイルから Python のバインディングを生成するのに外部のツールを使用することを決断しました。 すべての Qt の C++ の機能に対応できるという条件は当然として、最終的なパッケージの大きさに強い感心がありました。 以前のものはテンプレートを多用していたため、別のものが必要になりました。 いくつかの選択肢を検討した結果、そのチームは自分たちで Shiboken と呼ばれるジェネレーターを書くことにしました。 Shiboken は(QtScriptGenerator という昔のプロジェクトを元に作られた)ApiExtractor というライブラリを使用し、Clang を用いて Qt のヘッダファイルをパースして Qt のクラスの情報を取得します。 このステップは […]

Read More
Get started today with Qt Download now