使用 Python 全局名称空间创建属性控件

若要使用 Python 全局名称空间创建属性控件,请完成以下步骤:

创建属性控件

在下面的示例中,将使用 Python 全局名称空间方法创建一个滑块控件。回调名为 AEFloatSliderGlobal。此程序会创建 floatSlider 控件,然后该控件使用更改命令 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 )

该程序中使用下列参数:

定义 Python 程序

您必须定义 Python 程序,以便 Maya 可以使用它们。在“脚本编辑器”(Script Editor)Python 选项卡中执行上述示例的代码可以完成此操作。

定义对 Python 程序的回调

当您创建自定义模板文件时,请将 <description language="cb"> 标志添加至属性声明部分以指定对 Python 程序的回调。默认情况下,回调在模板中采用 MEL 进行指定。

若要在全局名称空间中指定名为 AEaddFloatSliderGlobal 的 Python 回调,声明应为 py.AEaddFloatSliderGlobal。声明采用以下格式: py.<ProcedureName>

若要将在以上 Python 模块中定义的自定义滑块控件添加至“白炽度绿”(Incandescence Green)属性,请采用以下操作:

<attribute name='incandescenceG' type='maya.float'>
   <label>Incandescence Green</label>
     <description language="cb">py.AEaddFloatSliderGlobal</description>
</attribute>
“属性编辑器”(Attribute Editor)中访问属性视图时,“白炽度绿”(Incandescence Green)属性使用自定义的滑块。

相关主题