'価値' を持つ別のポストがためのフラグですfloatSliderGrp - 変数ではありません。そのため、直接印刷することはできません。
あなたのやりたいことに応じて、次の2つの方法で進むことができます。
- 作成したコントロールの名前を保存し、他の関数の値を求めることができます。
partial
を使用すると、コントロール名を関数にバインドすることができます。または、コントロール名を作成し直すだけで、関心のあるUI要素の名前を知っている関数が作成されます。この場合、スライダにコマンドを入力しないでください。スライダの値を知る必要がある他の要素には、
- という変数を作成し、スライダ値が変更されるたびに更新できます。多くのツールで値を知る必要がある場合は、クラスを作成してスライダの値を入力することをお勧めします。他のコードではUIを気にすることなく値を取得できます。スライダが変化したときにシーン内で何かをしたい場合は、スライダを動かすときに
update_slider_value()
関数を変更することができます。
ここにアプローチ1があります。これは、スライダにdc
イベントをフックしようとしない - それはちょうど、スライダーオブジェクトの名前を覚えて、それを知っている必要があるときに値を照会します。
wnd = cmds.window()
col = cmds.columnLayout()
slider = cmds.floatSliderGrp(label='Angle', field=True, minValue=0.0, maxValue=10.0, value=0)
b = cmds.button('print value')
# since this is defined after `slider`, it knows the value
def print_value(*_):
print cmds.floatSliderGrp(slider, q=True, v=True)
cmds.button(b, e=True, c=print_value)
cmds.showWindow(wnd)
ここでのアプローチ#2で行わ同じことです。
class SliderWindow(object):
def __init__(self):
self.value = 0
self.window = cmds.window(title ="SliderWindow")
self.column = cmds.columnLayout()
self.slider = cmds.floatSliderGrp(label='Angle', field=True, minValue=0.0, maxValue=10.0, value=0, dc= self.update_slider_value)
cmds.button('print value', c= self.print_value)
cmds.showWindow(self.window)
def update_slider_value(self, *_):
self.value = cmds.floatSliderGrp(self.slider, q=True, v=True)
def print_value(self, *_):
print self.value
example = SliderWindow()
example
を知っている誰もがちょうどexample.value
を求めると、現在のスライダーの値を取得することができます。これはより複雑なケースには適していますが、単純なものには過度の負荷がかかります。
関連情報:Maya callbacks cheatsheet