使用 Python 创建属性控件

 
 
 

若要使用 Python 模块中定义的回调创建属性控件,请完成以下步骤:

创建属性控件

在下面的示例中,floatSlider 控件是由 Python 程序 AEaddFloatSliderModule 创建的,并使用了更改命令 AEaddFloatSliderModuleCB。回调 AEFloatSliderModule 在模块 AEaddFloatSlider.py 中定义。

import maya.cmds as cmds


def AEaddFloatSliderModule(	plug, sliderLabel, annot ):

	cmds.rowLayout( nc=2 )
	val = cmds.getAttr( plug )
	cmds.text( label=sliderLabel )
	slider = cmds.floatSlider( annotation=annot, v=val )
	def AEaddFloatSliderModuleCB( *args ):
		val = cmds.floatSlider( slider, q=1, v=1 )
		cmds.setAttr( plug, val )
	cmds.floatSlider( slider, e=1, cc=AEaddFloatSliderModuleCB )
	cmds.setParent( u=1 )

Python 程序使用了以下参数:

指定 Python 模块的位置

此步骤为 Maya 提供包含 Python 模块的目录的路径。将 PYTHONPATH 环境变量设置为模块的路径和位置。

定义对 Python 程序的回调

创建模板文件时,将 <description language="cb"> 标记添加到属性声明或视图定义中,以指定 Python 程序的回调。

若要指定 Python 模块 AEaddFloatSlider.py 中的 Python 回调 AEaddFloatSliderModule,声明应为 py.AEaddFloatSlider.AEaddFloadSliderModule。声明采用以下格式: py.<ModuleName>。<ProcedureName>

若要将上述 Python 模块中定义的自定义滑块控件添加至“白炽度蓝色”(Incandescence Blue)属性,请执行如下操作:

<attribute name='incandescenceB' type='maya.float'>
    <label>Incandescence Blue</label>
      <description language="cb">py.AEaddFloatSlider.AEaddFloatSliderModule</description>
</attribute>

“属性编辑器”(Attribute Editor)中访问属性视图时,“白炽度蓝色”(Incandescence Blue)属性会使用自定义的滑块。

相关主题