GUIによる項目の選択(チェックボックス)
チェックボックス
いくつかある項目の中から複数の項目を選ぶ場合はチェックボックスを使用する。
- checkBox(チェックボックス)
- オンとオフができるコントロール。
- チェックボックスの名前を自分で決めて利用する場合
例えば、以下のようにするとXというラベルのついたxCheckBoxという名前のチェックボックスが作られる。
checkBox -label "X" xCheckBox;
xCheckBoxという名前のチェックボックスが押されていたら何かコマンドを実行するには以下のように記述する。
if(`checkBox -q -value xCheckBox`)
{
オンの場合に実行したいMELコマンド または プロシージャ
}
- チェックボックスの名前をつけない場合
MELによってつけられたチェックボックスの名前を適当な変数に代入して利用する。
$checkButton1 = `checkBox -label "X"`;
$checkButton1という名前の変数に入っているチェックボックスが押されている場合に何かコマンドを実行するには以下のように記述する。
(checkBox -q -valueによってオンならtrue、オフならfalseが返される。)
if(`checkBox -q -value $checkButton1`)
{
オンの場合に実行したいMELコマンド または プロシージャ
}
- checkBoxGrp
- 複数のチェックボックスをまとめたもの。
チェックボックスの使用例
チェックボックスによってX方向にスケールされた球を作るGUIを作ってみよう。
チェックボックスにチェックが入っている時にだけX方向に2.0のスケールをかけるスクリプトである。
また、今回はクリックするとウインドウを消去するCloseボタンをつけてみよう。
- 以下のMELスクリプトをcheckBox1.melという名前で作る。
global proc makeSphere()
{
global string $checkBox1;
float $x = 1.0;
if(`checkBox -q -value $checkBox1`)
{
$x = 2.0;
}
sphere;
scale $x 1.0 1.0;
}
string $windowName = `window -title "checkBox1"`;
columnLayout;
text -label "make Sphere";
string $checkBox1 = `checkBox -label "X"`;
button -label "OK" -command "makeSphere()";
button -label "Close" -command "deleteUI $windowName";
showWindow;
- Script Editorの によってcheckBox1.melを読み込む。
- 以下のようなウインドウが表示される。
- そのままXチェックボックスにチェックを入れないでOKボタンを押すとスケールのかからない球が作られる。
- Xチェックボックスにチェックを入れてOKボタンを押すとX方向に2.0のスケールのかかった球が作られる。
スクリプトの解説
global proc makeSphere()
- このプロシージャがOKボタンによって実行される。
以下はmakeSphere()の中身。
-
global string $checkBox1;
- チェックボックスの名前が入った外部変数$checkBox1の宣言。
このプロシージャ(makeSphere)の外側で宣言された(される)変数をプロシージャ内で使用するときはglobalを変数宣言の前につける。
float $x = 1.0;
- X方向のスケール値を表すfloatの変数$xを宣言し、初期値として1.0を代入しておく。
チェックボックスがチェックが入っていなければ、この値で球をスケールする。
if(`checkBox -q -value $checkBox1`)
{
$x = 2.0;
}
- $checkBox1に名前の入っているチェックボックスにチェックが入っていれば、$xに2.0を代入する。
sphere;
- NURBSの球を作る。
scale $x 1.0 1.0;
- $xの値をX方向のスケール値としてスケールをかける。
string $windowName = `window -title "checkBox1"`;
- checkBox1というタイトルのついたウインドウを作る。
作られたウインドウの名前は$windowNameという変数に代入される。
columnLayout;
- 部品を縦1列に並べる。
text -label "make Sphere";
- make Sphereというテキストを表示。
string $checkBox1 = `checkBox -label "X"`;
- Xというラベルのついたチェックボックスを作る。
作られたチェックボックスの名前は変数$checkBox1に代入される。
button -label "OK" -command "makeSphere()";
- OKボタンを作る。
ボタンを押すとmakeSphere()が実行される。
button -label "Close" -command "deleteUI $windowName";
- Closeボタンを作る。
ボタンを押すと、deleteUIコマンドによって$windowNameに入っている名前のウインドウ(自分自身)が消去される。
showWindow;
- ウインドウを表示する。
練習
- 上の使用例を参考にしてcheckBox2.melを作り、Y、Z方向のチェックボックスを追加せよ。
- checkBox2.melを参考にcheckBox3.melを作り、プリミティブのスケールをチェックボックスにチェックの入っている方向全部同時にスライダーによって変化させることができるものにしよう。
checkBox3.melの実行結果
XとZのチェックボックスにチェックを入れ、スライダーの値を2.5にしてOKボタンを押した結果
まとめ
- 複数の項目の中からいくつかを選ぶにはcheckBoxを使用する。
参考
Prev
Home | Contents
abe@injapan.net