項目の選択(ラジオボタン)

ラジオボタン

いくつかの項目中から 1 つだけ選びたい場合はラジオボタンを使用します。

ラジオボタンを作るコマンド

radioButton
ラジオボタンを作るコマンドです。
ラジオボタンは複数のボタンのうち 1 つだけがオンになるものなので、 どのボタンが、どのグループに属するかを決める必要があります。 そこで、ラジオボタンをグループとしてまとめるには radioCollection コマンドを使用します。
radioButton コマンドと radioCollection コマンドは checkbox コマンドと同じように名前を自分で決めて作ることもできるし、 Maya が決めた名前を変数に代入して利用することもできます。
現在どのラジオボタンが選ばれているかを調べるには以下のコマンドを使用します。
radioButton -q -select radioCollection名;
また、 変数に radioCollection 名が入っている場合は、以下のように実行します。
radioButton -q -select $変数名;
これらのコマンドを実行することよって、オンになっている radioButton の名前が返されます。
具体的な使用例は以下の "ラジオボタンの使用例"を参照してください。
radioButtonGrp
複数(1 〜 4)個のラジオボタンを横に並べて一つのグループにしたものです。
具体的な使用例は radioButtonGrp のプログラム例を参考にしてください。

ラジオボタンの使用例

ラジオボタンによって 2 種類のプリミティブ、NURBS の球・キューブのうちのどちらかを作る GUI を作ってみましょう。
今回はラジオボタンに radioButton1 などの適当な名前をつけてゆく方法で作成してみます。

  1. 以下のMELスクリプトを makePrimitive1.mel という名前で作ります。
    global proc makePrimitive1()
    {
    	global string $radioCollection1;
    	string $selected;
    
    	$selected = `radioCollection -q -select $radioCollection1`;
    	if($selected == "radioButton1")
    	{
    		sphere;
    	}
    	else if($selected == "radioButton2")
    	{
    		nurbsCube;
    	}
    }
    
    string $windowName = `window -title "radioButton1"`;
    columnLayout;
    text -label "make Primitive";
    string $radioCollection1 = `radioCollection`;
    	radioButton -label "Sphere" -select radioButton1;
    	radioButton -label "Cube" radioButton2;
    button -label "OK" -command "makePrimitive1()";
    button -label "Close" -command ("deleteUI " + $windowName);
    showWindow;
    
  2. Script Editor の File → Source Script によって makePrimitive1.mel を読み込みます。
  3. 以下のようなウインドウが表示されます。
    [radio1.melの実行結果]
  4. Cube ボタンにチェックを入れて、 OK ボタンを押すと Cube が作られます。
    [ラジオボタンを押した結果]
    [OKボタンを押した結果]

スクリプトの解説

global proc makePrimitive1()
makePrimitive1 という名前のプロシージャーの宣言です。
このプロシージャーが OK ボタンによって実行されます。
global string $radioCollection1;
外部変数の宣言です。
このプロシージャー(makePrimitive1)の外側で宣言された変数を、 プロシージャ内で使用するときは global をつけておく必要があります。
global が無いと、 変数 $radioCollection1 はプロシージャーの内部で新しく宣言された変数になって、 radioCollection コマンドから返された名前を、プロシージャー内で使用することができなくなります。
string $selected;
選ばれたラジオボタンの名前を代入するための変数の宣言です。
$selected = `radioCollection -q -select $radioCollection1`;
$radioCollection1 という変数に代入されている名前のラジオコレクションの中で、 どのラジオボタンが選ばれているかを調べて、 その名前を $selected という変数に代入します。
if($selected == "radioButton1")
{
  sphere;
}
radioButton1 (1つ目のラジオボタンの名前)が選ばれているかどうか調べて、 選ばれていれば sphere コマンドを実行します。
else if($selected == "radioButton2")
{
  nurbsCube;
}
radioButton2 (2つ目のラジオボタンの名前)が選ばれているかどうか調べて、 選ばれていれば nurbsCube コマンドを実行します。
string $windowName = `window -title "radioButton1"`;
radioButton1 というタイトルのついたウインドウを作ります。
作られたウインドウの名前は $windowName という変数に代入されます。
columnLayout;
部品を縦 1 列に並べるレイアウトコマンドです。
text -label "make Primitive";
make Primitive というテキストを表示します。
string $radioCollection1 = `radioCollection`;
ラジオコレクションを作り、その名前を $radioCollection1 という変数に代入します。
これ以降に作られたラジオボタンがひとつのグループになり、 次のラジオコレクションが作られるまでか、 または現在のレイアウトが終るまでがひとつのグループになります。
radioButton -label "Sphere" -select radioButton1;
ラジオボタンを作り、そのラジオボタンの名前を radioButton1 にします。
-select フラグがついていると最初にこのボタンが選ばれた状態で表示されます。
radioButton -label "Cube" radioButton2;
ラジオボタンを作り、そのラジオボタンの名前を radioButton2 にします。
button -label "OK" -command "makePrimitive1()";
OK ボタンを作ります。
ボタンを押すと makePrimitive1() が実行されます。
button -label "Close" -command ("deleteUI " + $windowName);
Close ボタンを作ります。
ボタンを押すと、deleteUI コマンドによって、 $windowName に入っている名前のウインドウ(自分自身)が消去されます。
showWindow;
ウインドウを表示します。

練習

まとめ

参考


Prev | Next
Home | Contents
Mail