'valeur' est un drapeau pour la floatSliderGrp - pas une variable. C'est pourquoi vous ne pouvez pas l'imprimer directement. En fonction de ce que vous voulez faire, vous avez deux façons d'aller de l'avant.
- Vous pouvez stocker le nom du contrôle que vous avez créé, puis demander la valeur pour d'autres fonctions. Vous pouvez utiliser
partial
pour lier des noms de contrôle à des fonctions, ou vous pouvez simplement réorganiser la façon dont vous les créez afin que les fonctions soient créées en connaissant les noms des éléments d'interface utilisateur qui les intéressent. Vous ne mettez pas une commande sur le curseur dans ce cas, mais sur quelque chose d'autre qui a besoin de connaître la valeur du curseur
- vous pouvez créer une variable et la mettre à jour chaque fois que la valeur du curseur change. Si un grand nombre d'outils différents doivent connaître la valeur, une bonne option consiste à créer une classe et à y insérer la valeur du curseur. Ensuite, un autre code peut simplement saisir la valeur sans se soucier de l'interface utilisateur. Si vous voulez faire quelque chose dans la scène lorsque le curseur change, vous pouvez changer la fonction
update_slider_value()
pour faire les choses lorsque le curseur est déplacé.
Voici l'approche n ° 1. Il ne cherche pas à accrocher l'événement dc
sur le curseur - il se souvient que le nom des objets curseur et interroge la valeur quand il a besoin de savoir:
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)
est ici la même chose accomplie avec l'approche # 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()
Tous ceux qui connaissent example
peut simplement demander example.value
et obtenir la valeur actuelle du curseur. C'est bon pour les cas plus complexes, mais trop pour les choses simples.
information associée: Maya callbacks cheatsheet