To create an attribute control using the Python global namespace, complete the following steps:
- Create the attribute control
- Define the Python procedures
- Define the callback to the Python procedure
Create the attribute control
In the following example a slider control is created using Python global namespace methods. The callback is named AEFloatSliderGlobal. A floatSlider control is created by this procedure, and uses the change command AEaddFloatSliderGlobalCB.
def AEaddFloatSliderGlobalCB( plug, slider ): val = cmds.floatSlider( slider, q=1, v=1 ) cmds.setAttr( plug, val ) def AEaddFloatSliderGlobal( plug, sliderLabel, annot ): cmds.rowLayout( nc=2 ) val = cmds.getAttr( plug ) cmds.text( label=sliderLabel ) slider = cmds.floatSlider( annotation=annot, v=val ) cmds.floatSlider( slider, e=1, cc=('AEaddFloatSliderGlobalCB( \"' + plug + '\", \"' + slider + '\" )' ) ) cmds.setParent( u=1 )
The following parameters are used by the procedure:
- plug is the plug, which is the node and attribute used by the control.
- label is the label for the attribute.
- annot is the annotation for the attribute.
Define the Python procedures
You must define your Python procedures, so Maya can use them. This can be done by executing the code from the example above in the Python tab of the Script Editor.
Define the callback to the Python procedure
When you are creating your custom template file, add a <description language="cb"> flag to the attribute declaration section to specify the callback to the Python procedure. By default, a callback is specified in MEL in the template .
To specify a Python callback called AEaddFloatSliderGlobal in the global namespace, the declaration should be py.AEaddFloatSliderGlobal. The declaration uses the following format: py.<ProcedureName>.
To add the custom slider control defined in the Python module above to the Incandescence Green attribute, use the following:
<attribute name='incandescenceG' type='maya.float'> <label>Incandescence Green</label> <description language="cb">py.AEaddFloatSliderGlobal</description> </attribute>
