Create an attribute control using the Python global namespace

To create an attribute control using the Python global namespace, complete the following steps:

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:

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>
When you access the attribute view in the Attribute Editor, the Incandescence Green attribute uses the customized slider.

Related topics