在介绍我是python的新手之后,我尝试使用intField命令为这个属性设置多次迭代:“aiSubdivIterations”。在
脚本应该是这样工作的:当我运行脚本时,它会打开一个窗口,我可以在其中设置我的值,当我按enter键时,它应该会在“aiSubdivIterations”槽中自动设置相同的值。在
import maya.cmds as pm
def aiSetIter(iterValue):
objSelect= pm.ls(sl=1, dag=True, leaf=True)
for obj in objSelect:
pm.setAttr( obj + '.aiSubdivIterations', iterValue)
pm.window(title = 'Interations')
pm.columnLayout ('mainColumn', adjustableColumn = True)
pm.gridLayout ('nameGridLayout01', numberOfRowsColumns = (2,2), cellWidthHeight = (80,30), parent = 'mainColumn')
pm.text (label = 'number')
pm.intField (minValue=0, maxValue=10, step=1, vcc = 'aiSetIter(iterValue)')
pm.showWindow()
有人能帮忙让这个剧本生效吗?在
提前谢谢
弗拉维亚
脚本最简单的工作方式是指定要调用的函数(不带参数,其余代码不变):
可以假定Maya的intField将通过自动传递它存储的值来调用指定的函数。 在上面的例子中,您的函数将是called only when the UI is made visible or closed。在
如果每次值更改时都需要调用函数,则还需要添加一个"changeCommand" (or "cc") flag:
^{pr2}$对于更复杂的场景,您可能需要考虑lambda functions(您可以阅读here一篇很好的文章);这将允许延迟对函数的求值。 下面是一个非常简单的示例,它在intField值发生变化时检索当前时间,并将其与值本身一起传递给myLambdaFunc:
编辑:
一个小的整合,因为我刚才碰到了这个: https://theodox.github.io/2014/maya_callbacks_cheat_sheet
这是一篇由theodox撰写的关于Maya用户界面和回调的非常有用且详尽的文章,可以通过this;找到,值得一读。在
相关问题 更多 >
编程相关推荐