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

チェックボックス

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

チェックボックスの種類

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

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

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

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

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

  1. 以下の Python スクリプトを checkBox1.py という名前で作ります。
    import pymel.core as pm
    
    def makeSphere():
        x = 1.0
        if checkBox1.getValue():
            x = 2.0
        pm.sphere()
        pm.scale([x, 1.0, 1.0])
    
    with pm.window(title='checkBox1') as windowName:
        with pm.columnLayout():
            pm.text(label=u'球作成')
            checkBox1 = pm.checkBox(label=u'スケールX')
            pm.button(label=u'作成', command=pm.Callback(makeSphere))
            pm.button(label=u'閉じる', command=pm.Callback(pm.deleteUI, windowName.name()))
    
  2. スクリプト エディタ の ファイル → スクリプトのロード によって checkBox1.py を読み込んで、テンキーの Enter キーなどで実行します。
  3. 以下のようなウインドウが表示されます。
    [checkBox1.melの実行結果]
  4. そのまま X チェックボックスにチェックを入れないで、 作成 ボタンを押すと、スケールのかからない球が作られます。
    [作成ボタンを押した結果]
  5. X チェックボックスにチェックを入れて、 作成 ボタンを押すと、 X 方向に 2.0 のスケールのかかった球が作られます。
    [チェックボックスにチェックを入れた結果]
    [作成ボタンを押した結果]

スクリプトの解説

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

練習

まとめ

参考


Prev | Next
Home | Contents
Mail