Qt for Python

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

QML と Qt for Python の連携

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

この記事は The Qt Blog の QML and Qt for Python interaction を翻訳したものです。 執筆: Friedemann Kleint, 2018年05月14日 QtWidgets というデスクトップのアプリケーション向けの UI 技術に加え、Qt は QML という UI 技術も提供しています。 今回は、Qt for Python で QML をどう使うのかを、declarative/extending/chapter3-bindings を基に大まかに説明をしたいと思います。 まず初めに、.qml ファイルをロードするための基本的な型を見てみましょう。QGuiApplication と QQuickView のインスタンスを生成します。 QML のエレメントがビューのサイズに追従するよう、resizeMode プロパティに SizeRootObjectToView を設定します。 app = QGuiApplication(sys.argv) view = QQuickView() view.setResizeMode(QQuickView.SizeRootObjectToView) その後、ビューの setSource メソッドを使用して QML のロードを行います。 QML […]

Read More

Hello Qt for Python

Published Wednesday September 5th, 2018 | Leave a comment
Posted in Qt for Python | Tags: ,

この記事は The Qt Blog の Hello Qt for Python を翻訳したものです。 執筆: Cristián, 2018年05月04日 Qt for Python のテクノロジープレビューのリリースが迫って来たのに伴い、Python の世界 へのドアの開け方を簡単に紹介したいと思います。 早速ですが、QWidgets を使って Qt for Python の簡単さを実感してみましょう。 すべてのスクリプトはだいたい以下のような構成になっています: QApplication のインスタンスを生成します QWidgets の中から使用したいもの(QLabelなど)をインポートします アプリケーションを表示し、QApplication を実行します これらをまとめると、以下のようになります。 # hello_world.py from PySide2.QtWidgets import QApplication, QLabel app = QApplication([]) label = QLabel(“Hello Qt for Python!”) label.show() app.exec_() これを実行するのは、単に python hello_world.py を実行するだけです。 […]

Read More

Qt for Python があなたの身近なコンピューターにも

Published Thursday May 24th, 2018 | Leave a comment
Posted in Qt for Python | Tags:

この記事は The Qt Blog の Qt for Python is coming to a computer near you を翻訳したものです。 執筆: Harald Kjølberg, 2018年04月13日 みなさんの中には、いや、おそらくみなさんの多くは Qt が QMLや Qt Quick Controls、Qt Widgets といった技術を駆使して、素晴らしいユーザーインターフェースを作ることが可能な、素晴らしい C++ のフレームワークだということをご存知でしょう。ここで私が特に主張したいところは、C++ が今日世界中で使われているプログラミング言語の中でも特に幅広く使われているということで、それに対してマサカリを投げてくるような人はおそらくいないでしょう。Python 人口が急速に増えているということも、おそらく幅広く認知されている事実かと思います。で、この記事はなんの記事って思うでしょ?それは2分後のお楽しみです。 C++ と Python はどちらも素晴らしいプログラミング言語として、別々の分野で使われています。C++ はプログラミング界のスター・デストロイヤーで、すべての問題を破壊してくれる存在です。と、同時によく分かっていない人にとっては頭痛の原因にもなり得ます。このため、プログラミング界のミレニアム・ファルコンである Python を選択する方が便利なケースもあります。この場合はお姫様でも密輸団でも誰でも操縦ができ、オルデランからヤヴィンまで光速で移動が可能です。そして、クルー全員をスター・デストロイヤーから連れ出すにせよ、ミレニアム・ファルコンで 駆けずり回るにせよ、最新のユーザーインターフェースが欲しいでしょう。まさにそのスター・デストロイヤーとミレニアム・ファルコンの橋渡しのところこそがプログラミング界の R2-D2 である Qt が必要とされている場所になります。 Qt の Python バインディングの PySide2 はこの春、装いを新たに生まれ変わりました。Python アプリケーションで使われる Qt であることをちゃんと反映したかったため、Qt for […]

Read More
Get started today with Qt Download now