我试图编写一个小脚本来创建' n' UI上的按钮,取决于场景中存在多少个nCloth节点,因此用户可以通过按下相应的按钮来选择节点(为了测试我现在只需要它们来选择节点)。这是我到目前为止所得到的:
import maya.cmds as cmds
def fillTemp(*args):
theElements = cmds.rowColumnLayout ('listColumn', query=True, childArray=True)
if theElements > 0:
for element in theElements:
cmds.deleteUI (element)
objectList = cmds.ls(type='nCloth')
for item in objectList:
cmds.setParent ('listColumn')
cmds.text ((item+'labelText'), label=item, align='left',width= 220)
cmds.button ((item+'_select'), label='Select', width= 50)
if (cmds.window('testWin', exists=True)):
cmds.deleteUI('testWin')
theWindow = cmds.window('testWin', title='Test Window', widthHeight=(270, 390), sizeable=True)
cmds.columnLayout ('mainColumn', adjustableColumn=False)
cmds.button ('FillList', label= "nCloth in Scene", width= 270, command= fillTemp)
cmds.scrollLayout ('nClothScrollList', w=270 , h=150, backgroundColor=(.15,.15,.15) )
cmds.rowColumnLayout ('listColumn', numberOfColumns=2, columnWidth=[(1, 220), (2, 50)])
cmds.setParent('..')
cmds.showWindow (theWindow)
到目前为止,我已经能够使用节点名称和一个按钮来填充RowColumnLayout以选择它们。但是,我不知道如何让这些按钮工作..任何提示或想法将不胜感激。
答案 0 :(得分:0)
我没有测试过这段代码,但它应该可行。你需要使用lambda或partial,我更喜欢partial。
import maya.cmds as cmds
from functools import partial
def fillTemp(*args):
theElements = cmds.rowColumnLayout ('listColumn', query=True, childArray=True)
if theElements > 0:
for element in theElements:
cmds.deleteUI (element)
objectList = cmds.ls(type='nCloth')
for item in objectList:
cmds.setParent ('listColumn')
cmds.text ((item+'labelText'), label=item, align='left',width= 220)
cmds.button ((item+'_select'), label='Select', width= 50, command=partial(selectNode, item))
def selectNode(node, *args):
cmds.select(cl=True)
cmds.select(node)
if (cmds.window('testWin', exists=True)):
cmds.deleteUI('testWin')
theWindow = cmds.window('testWin', title='Test Window', widthHeight=(270, 390), sizeable=True)
cmds.columnLayout ('mainColumn', adjustableColumn=False)
cmds.button ('FillList', label= "nCloth in Scene", width= 270, command= fillTemp)
cmds.scrollLayout ('nClothScrollList', w=270 , h=150, backgroundColor=(.15,.15,.15) )
cmds.rowColumnLayout ('listColumn', numberOfColumns=2, columnWidth=[(1, 220), (2, 50)])
cmds.setParent('..')
cmds.showWindow (theWindow)