GUI開発をもう少し勉強したく、SU2のGUIで使われているTrameを調査することとした。
 trame | trame
trame | trame
Trameのインストール
公式ドキュメントに沿って実行する。
今回はWindowsのPythonで構築するので、適宜読み替えていく。
まずは作業用のフォルダを作成する。
チュートリアルをgit cloneでダウンロードする。
git clone https://github.com/Kitware/trame-tutorial.git仮想環境を構築し、そこに必要なライブラリを追加する。
python -m venv .venv
.\.venv\Scripts\activate
python -m pip install --upgrade pip
pip install trame                   # Install trame core
pip install trame-vuetify trame-vtk # Install widgets that we'll be using
pip install vtk                     # Install the VTK library最初のチュートリアルを実行する。
python .\trame-tutorial\00_setup\app.py  --port 1234Hello trameと表示された。
00_setup\app.pyの中身を確認する。全体はこのようになっている。
from trame.app import get_server
from trame.ui.vuetify import SinglePageLayout
# -----------------------------------------------------------------------------
# Get a server to work with
# -----------------------------------------------------------------------------
server = get_server(client_type = "vue2")
# -----------------------------------------------------------------------------
# GUI
# -----------------------------------------------------------------------------
with SinglePageLayout(server) as layout:
    layout.title.set_text("Hello trame")
# -----------------------------------------------------------------------------
# Main
# -----------------------------------------------------------------------------
if __name__ == "__main__":
    server.start()
まず、使用するライブラリを読み込む。
from trame.app import get_server
from trame.ui.vuetify import SinglePageLayouttrameのappから、UIとビジネスロジックをバインドするサーバーインスタンスを取得するためのファクトリー関数をインポートします。また、trame.ui.vuetifyから、vuetify(メインのウィジェットライブラリ)に依存する単一ページのクライアントアプリケーションのスケルトンをインポートします。
次に、バインド先となるサーバーを渡してグラフィカルユーザーインターフェース(GUI)を定義します。そして、そのレイアウトを使用してツールバーのタイトルを"Hello trame"に更新します。
server = get_server(client_type = "vue2")with SinglePageLayout(server) as layout:
    layout.title.set_text("Hello trame")main.pyが実行されるとserver.start()を実行する。
if __name__ == "__main__":
    server.start()実行時に--port xxxxをつけると接続ポートを指定できる。
次回はこれを読んでいく。
 VTK | trame
VTK | trame