スクリプトでパラメータを入力するインターフェースを出したい
Shade3Dのスクリプトでは、input()やraw_input()などのキーボード入力処理を受け付けません。
その代用として、独自のダイアログボックスを表示して値を入力するインターフェースを設けることができます。
# ダイアログボックスの作成.
dlg = xshade.create_dialog_with_uuid('3e40dabb-f8cd-4403-8448-159cf952455b')
# ダイアログのパラメータ.
int_id = dlg.append_int('整数値', '個')
float_id = dlg.append_float('浮動小数点値')
bool_id = dlg.append_bool('チェックボックス')
string_id = dlg.append_string('文字列')
# デフォルトボタンを追加.
dlg.append_default_button()
# 値を指定.
dlg.set_value(int_id, 100)
dlg.set_value(float_id, 1.0)
dlg.set_value(bool_id, True)
dlg.set_value(string_id, 'test')
# デフォルト値を指定.
dlg.set_default_value(int_id, 100)
dlg.set_default_value(float_id, 1.0)
dlg.set_default_value(bool_id, True)
dlg.set_default_value(string_id, 'test')
# ダイアログボックスを表示.
if dlg.ask("テスト入力"):
# ダイアログボックスの値を取得.
intVal = dlg.get_value(int_id)
floatVal = dlg.get_value(float_id)
boolVal = dlg.get_value(bool_id)
stringVal = dlg.get_value(string_id)
print "int : " + str(intVal)
print "float : " + str(floatVal)
print "bool : " + str(boolVal)
print "string : " + str(stringVal)
上記をスクリプトウィンドウにコピー&ペーストして実行、
もしくは拡張子pyのファイルに保存してscriptsフォルダに配置して実行すると、
以下のダイアログボックスが表示されます。
ダイアログボックスのOKボタンを押すと、メッセージウィンドウに入力された値が表示されます。
「xshade.create_dialog_with_uuid」でダイアログボックスを作成します。
引数では任意のUUIDを指定します。
UUIDの作成については「UUIDを生成する (ウィジット/プラグインの識別用)」をご参照くださいませ。
戻り値は”dialog”クラスが返されます。
UUIDを指定することでダイアログボックスでの値が保持されます。
2回目に開いたダイアログボックスでは前回の値が表示されます。
「dlg = xshade.create_dialog()」を使用すると、dlg.set_valueで指定した値を常に入れることになります。
dialogクラスの「append_xxx」メソッドで項目を追加します。
「append_int」「append_float」「append_bool」「append_string」は、それぞれint,float,bool,stringを指定します。
第一引数が項目名です。
「append_int」「append_float」「append_string」の場合は、第二引数に単位を指定できます(省略可能)。
戻り値は項目の識別idが返されます。
dialogクラスの「append_default_button()」で「初期設定」ボタンを追加します。
dialogクラスの「set_value」で第一引数で指定した識別idに対して、第二引数の値を入れます。
「create_dialog_with_uuid」でUUIDを指定してダイアログボックスを作成する場合、
2回目のダイアログボックス表示時では前回の値が引き継がれ、「set_value」の値は反映されません。
dialogクラスの「set_default_value」で第一引数で指定した識別idに対して、第二引数の値を初期値として入れます。
dialogクラスの「ask(“xxx”)」で、第一引数をタイトル名としてダイアログボックスを表示します。
ダイアログボックスでOKボタンが押されたときに、askはTrueを返します。
dialogクラスの「get_value(id)」で、第一引数で指定した識別IDの項目での値を取得します。
ダイアログボックスで指定できる項目の種類
ダイアログボックスでは、以下の項目を使用できます。
項目の種類 | 内容 |
---|---|
int | 整数値。単位指定可能 |
float | 単精度浮動小数点値。単位指定可能 |
double | 倍精度浮動小数点値。単位指定可能 |
bool | True/False。チェックボックスとして表示される |
rgb | 色(RGB)指定。単位指定可能 |
string | 1行テキストを指定。単位指定可能 |
secure_short_string | パスワード用の短い文字列を指定。単位指定可能 |
secure_string | パスワード用の文字列を指定。単位指定可能 |
text | 複数行のテキストを指定 |
vec2 | X/Y要素を指定。単位指定可能 |
vec3 | X/Y/Z要素を指定。単位指定可能 |
append_path | フォルダ選択 |
selection | ポップアップメニューでの選択。単位指定可能 |
radio_button | ラジオボタンでの選択 |
配置のためのグループ化、タブ化なども行えます。
詳しくは、Shade3D Python スクリプトリファレンスの「dialog」クラスをご参照くださいませ。