Qt for Python(PySide2)

前回の記事でQt for Pythonの公式パッケージ動作環境を整えましたので、実際にその環境でのGUIサンプルを作ってみました。

QtではGUI実装方法にWidgetベースとQMLベースのものが選択できます。


Qt Widgetによる実装

WidgetベースはQtでは旧式の実装方法であり、ソースコード中でGUIパーツのインスタンス化、レイアウトを行うもので、コードを書き慣れた人であればゴリゴリ書ききれますが、一定以上の規模になると構造設計をしっかり行わないと読みにくくなったり、後々のメンテナンスが大変になります。またGUIレイアウトも直感的には理解しづらいものです。


QMLによる実装

QMLベースは新しい実装方法であり、アルゴリズムを記述するソースコードとGUI定義を分離するためにQMLと言うjsonライクな独自文法のマークアップ言語を使用します。そのため画面デザインに関するものはQML、動作に関するものは下位層のC++やPythonで記述する事ができます。とは言っても、QML自体もJava Scriptをサポートしておりアルゴリズムの記述が可能です。この辺りは設計方針にもよるのですが、うまく使い分けしないと結局GUI部分と実機能部分の分離ができなくなりますので、そういう意味では「QMLだから分かりやすい〜」とかって事は無いでしょうね。結局はアーキテクトの腕の見せ所というか…😁


さて、そんな2種類の実装方法ですが、C++を使ったものは非常に沢山サンプルが見られましたが、Pythonを使ったものはまだ少ないみたい。特にQML + Pythonの実装は余り見られないようです。

QMLは結構癖があって、特に下位層のPythonと相互通信しなければならない場合(非同期処理に多いですが)結構実装がやっかいになります。この辺りは追々サンプルとか作れればとは思いますが、今回はとにかくまず画面を表示するための雛形を準備しました。

コードはgithubのリポジトリに上げたのでそちらをご参照ください。cloneしてもらえれば直ぐに試せるようにPipFileも追加してあります。

https://github.com/murakan/qt_for_python

Author: kan
初めてプログラムらしきものを作ったのは幼稚園の時。それから約40年経ち、現在はデジタル回路設計から信号処理、機械学習まで幅広い経験を活かしてシステムアーキテクトとして活動中。超並列処理、デジタル回路とソフトウェアのバランス設計が得意分野。 Linux/Mac/Windows使い。 C/C++を主要言語として、Unity、Qtなどのフレームワーク興味あり。UI/UXデザイン、STL拡張など。 音声処理、画像処理、技術コンサルは仕事でも請け負います。 一般ソフトウェア開発プロセス、医療機器ソフトウェア開発プロセス作成も進行中。

1 thought on “Qt for Python(PySide2)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください