項目の選択(チェックボックス)

チェックボックス

いくつかの項目の中から、ひとつ以上の項目を選べるようにしたい場合は、チェックボックスを使用します。
チェックボックスも、スライダーと同じように、 まずチェックボックスを作成し、 その後で、現在のチェックボックスの状態を調べます。

チェックボックスの種類

checkBox(チェックボックス)
オンとオフができるコントロール
checkBoxGrp
複数(1 〜 4)個のチェックボックスを横に並べたもの

チェックボックスの状態を調べる方法

チェックボックスに、チェックが入っているかどうかを調べるには、以下の方法があります。

チェックボックスの使用例

チェックボックスにチェックをいれると、 X 方向にスケールされた球を作る GUI を作ってみましょう。
以下は、チェックボックスにチェックが入っている時にだけ、 X 方向に 2.0 のスケールをかけるスクリプトです。
また、今回は、クリックするとウインドウを消去する 閉じる ボタンをつけてみましょう。

  1. 以下の MEL スクリプトを Python スクリプトに書き直して、 checkBox1.py という名前で保存します。
    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 "球作成";
    string $checkBox1 = `checkBox -label "スケールX"`;
    button -label "作成" -command "makeSphere()";
    button -label "閉じる" -command ("deleteUI " + $windowName);
    showWindow;
    
  2. 以下の Python スクリプトを checkBox1.py という名前で作ります。
    import pymel.core
    
    def makeSphere():
        x = 1.0
        if pymel.core.checkBox(checkBox1, q=True, value=True):
            x = 2.0
        pymel.core.sphere()
        pymel.core.scale([x, 1.0, 1.0])
    
    windowName = pymel.core.window(title='checkBox1')
    pymel.core.columnLayout()
    pymel.core.text(label=u'球作成')
    checkBox1 = pymel.core.checkBox(label=u'スケールX')
    pymel.core.button(label=u'作成', command='makeSphere()')
    pymel.core.button(label=u'閉じる', command=('pymel.core.deleteUI("' + windowName + '")'))
    pymel.core.showWindow()
    
  3. スクリプト エディタ の ファイル → スクリプトのロード によって checkBox1.py を読み込んで、テンキーの Enter キーなどで実行します。
  4. 以下のようなウインドウが表示されます。
    [checkBox1.melの実行結果]
  5. そのまま X チェックボックスにチェックを入れないで、 作成 ボタンを押すと、スケールのかからない球が作られます。
    [作成ボタンを押した結果]
  6. X チェックボックスにチェックを入れて、 作成 ボタンを押すと、 X 方向に 2.0 のスケールのかかった球が作られます。
    [チェックボックスにチェックを入れた結果]
    [作成ボタンを押した結果]

スクリプトの解説

import pymel.core
pymel.core モジュールをインポートします。
def makeSphere():
makeSphere という関数の宣言です。
作成 ボタンを押した時に、この関数が実行されます。
x = 1.0
X 方向のスケール値を表す変数 x に初期値として 1.0 を代入しておきます。
チェックボックスにチェックが入っていなければ、この値で球体をスケールします。
if pymel.core.checkBox(checkBox1, q=True, value=True):
名前が外部変数 checkBox1 に入っているチェックボックスに、チェックが入っているかどうか調べています。
MEL と違って、外部変数を参照するのに、 global などの宣言が必要がないことに注意してください。
x = 2.0
チェックボックスにチェックが入っていれば、x に 2.0 を代入します。
pymel.core.sphere()
NURBS の球体を作ります。
pymel.core.scale([x, 1.0, 1.0])
X 方向に x だけスケールをかけます。
windowName = pymel.core.window(title='checkBox1')
checkBox1 というタイトルのついた、ウインドウを作ります。
作られたウインドウの名前は、 windowName という外部変数に代入されます。
pymel.core.columnLayout()
部品を縦 1 列に並べるレイアウトです。
pymel.core.text(label=u'球作成')
球作成 というテキストを表示します。
checkBox1 = pymel.core.checkBox(label=u'スケールX')
スケールX というラベルのついた、チェックボックスを作ります。
作られたチェックボックスの名前は、外部変数 checkBox1 に代入されます。
pymel.core.button(label=u'作成', command='makeSphere()')
作成 ボタンを作ります。
ボタンを押すと makeSphere() が実行されます。
pymel.core.button(label=u'閉じる', command=('pymel.core.deleteUI("' + windowName + '")'))
閉じる ボタンを作ります。
ボタンを押すと、deleteUI() 関数によって、 外部変数 windowName に入っている名前のウインドウ(自分自身)が消去されます。
deleteUI() には引数として、 消したいオブジェクトの名前を文字列として与えます。 そのために、ウインドウ名の両端に " がつくようにしています。
pymel.core.showWindow()
ウインドウを表示します。

練習

まとめ

参考


Prev | Next
Home | Contents
Mail