(01)Dear PyGuiのステップ1

 4th January 2023 at 9:09am

Dear PyGuiは、Python用のGUIツールキットです。簡単なだけでなく、かなり複雑なGUIの作成も可能です。

C++用のGUIライブラリ「ImGui」で構築されています。ゲームやリアルタイム3Dなどへの利用を想定していて、高速性もありそうです。

インストールは、以下で簡単に出来てしまいます。ただし、Python3.6(64ビット)以上が必要です。

> pip install dearpygui

以下の例では、「WinPython-3.8.9.amd64」のIDLEを使っています。

ビューポートとアイテム

以下のサンプルコードはDearPyGuiのドキュメントからの引用です。

DearPyGui_Sample01.py

# サンプルスクリプト1

import dearpygui.dearpygui as dpg

dpg.create_context()
dpg.create_viewport(title='Custom Title', width=600, height=300)

with dpg.window(label="Example Window", pos=(10, 10), width=200, height=200):
    dpg.add_text("Hello, world")
    dpg.add_button(label="Save")
    dpg.add_input_text(label="string", default_value="Quick brown fox")
    dpg.add_slider_float(label="float", default_value=0.273, max_value=1)

dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()

実行すると以下のGUIアプリケーションが表示されます。

すべてのDPG(Dear PyGui)アプリは、以下を実行する必要があります。

  • コンテキストの作成create_context()
    • これが一番最初でないと、DearPyGuiは起動しません。
  • ビューポートの作成から表示
    1. ビューポートの作成create_viewport()
    2. ビューポートの割り当てsetup_dearpygui()
    3. ビューポートの表示show_viewport()
  • レンダリングの開始start_dearpygui()
  • コンテキストの破棄destroy_context()

Dear PyGuiでは、一番外側のウィンドウを「ビューポート(赤枠)」、その中で作成されたものはすべて「アイテム」と呼ばれます。緑枠のウィンドウや、ウィンドウの中に作成されたボタンやテキストなども「アイテム」と呼ばれます。

属するコンテナー

ウィンドウは子アイテムを持ことができるコンテナータイプと呼ばれるアイテムです。ボタンやテキストなどはコンテナータイプのアイテムに追加されます。

下のサンプルスクリプト2のwith dpg.window(・・・):内で作成されたアイテムは、自動的にそのウィンドウに属することになります。

with dpg.window(・・・):内で作成されなくても、オプション(, parent=~)で属するコンテナーを指定することが可能です。

ちなみに、button1 = dpg.add_button()の場合は、「button1」がアイテムの変数名になります。with dpg.window() as window1;の場合は、as以降の「winodw1」がアイテムの変数名になります。

DearPyGui_Sample02.py

# サンプルスクリプト2

import dearpygui.dearpygui as dpg

dpg.create_context()
dpg.create_viewport(title='Custom Title', width=600, height=300)

with dpg.window(label="Label of Window1", pos=(10, 10), width=250, height=200) as window1:
    button1 = dpg.add_button(label="My parerent is window1.")

button2 = dpg.add_button(label="My parerent is Window1, too.", parent=window1)

dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()

実行すると以下のGUIアプリケーションが表示されます。

タグシステム

すべてのアイテムにはユニークなIDが関連付けられている必要があります。

通常、アイテムが作成されるとIDが自動的に生成されます。後で操作する場合は、このIDを明示的に設定することで操作することができます。ユニークなIDでない場合はエラーが発生します。

サンプルスクリプト2をタグを使った記述に書き直してみます。

DearPyGui_Sample03.py

# サンプルスクリプト3

import dearpygui.dearpygui as dpg

dpg.create_context()
dpg.create_viewport(title='Custom Title', width=600, height=300)

with dpg.window(label="Label of Window1", pos=(10, 10), width=250, height=200, tag="window1"):
    button1 = dpg.add_button(label="My parerent is window1.", tag="button1")

dpg.add_button(label="My parerent is Window1, too.", parent="window1", tag="button1")

dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()

サンプルスクリプト3を実行すると、ユニークなIDではないので最初エラーが発生します。tag="button1tag="button2などとするとエラーは解消され、2と同じ結果になります。

変数名を使わずに、タグを使う事でDear PyGui独自の使い方が可能になります。


Homeへプログラミングの記事Topへ