函数仅使用一个 return 作为参数
function only using one return for argument
我的组合函数似乎只使用我想用作参数的三个中的一个 return。我收到以下错误消息
错误:combine_lists() 正好接受 3 个参数(给定 1 个)
我该如何解决这个问题?
删除对 ikw 和 ikpv 的引用使我不会收到错误。它认为我可以以这种方式使用来自不同功能的多个 return,但也许不能?
我的按钮代码:
cmds.button(label='IK 2 FK', command = combine_lists, width=100)
def select_joints_afk():
Fks = []
del Fks[:]
if cmds.ls(selection = True,type=("transform",'nurbsCurve')):
sel = cmds.ls(sl=True)
fkCtrls = cmds.listRelatives(sel, allDescendents=True, type=("transform",'nurbsCurve'))
Fks = [nurbsCurve for nurbsCurve in fkCtrls if nurbsCurve.startswith('FK') & nurbsCurve.endswith('Ctrl')]
cmds.textFieldButtonGrp(gtF0, edit = True, tx ='' .join(sel),buttonLabel='IK OK',backgroundColor = (.5,.8,.2))
del Fks[1]
del Fks[2]
Fks.extend(sel)
print Fks[0]
print Fks[1]
print Fks[2]
return Fks
else:
text = cmds.confirmDialog( title='Error', message='Must select joint', button=['OK'], defaultButton='Ok', dismissString='No' )
def select_joints_aikw():
ikw = []
del ikw[:]
if cmds.ls(selection = True,type=("transform",'nurbsCurve')):
ikwrist=cmds.ls(selection = True)
ikw = [nurbsCurve for nurbsCurve in ikwrist if nurbsCurve.startswith('IK') & nurbsCurve.endswith('Ctrl')]
cmds.textFieldButtonGrp(gtF1, edit = True, tx ='' .join(ikwrist),buttonLabel='IK OK',backgroundColor = (.5,.8,.2))
print ikw
return ikw
else:
text = cmds.confirmDialog( title='Error', message='Must select joint', button=['OK'], defaultButton='Ok', dismissString='No' )
def select_joints_ikpv():
ikpv = []
del ikpv[:]
if cmds.ls(selection = True,type=("transform",'nurbsCurve')):
ikPvsel = cmds.ls(selection = True)
ikpv = [nurbsCurve for nurbsCurve in ikPvsel if nurbsCurve.startswith('IK') & nurbsCurve.endswith('Ctrl')]
cmds.textFieldButtonGrp(gtF2, edit = True, tx ='' .join(ikPvsel),buttonLabel='IK OK',backgroundColor = (.5,.8,.2))
print ikpv
return ikpv
else:
text = cmds.confirmDialog( title='Error', message='Must select joint', button=['OK'], defaultButton='Ok', dismissString='No' )
def combine_lists(Fks,ikw,ikpv):
Fks = select_joints_afk()
ikw = select_joints_aikw()
ikpv = select_joints_ikpv()
print Fks+ikw+ikpv
你有
def combine_lists(Fks,ikw,ikpv)
这意味着无论何时调用 combine_lists() 都需要传递三个参数.. 即 combine_lists(x, y, z)。看起来你只是在使用 combine_lists 来计算这三件事,你并没有试图传递任何东西..所以就这样做:
def combine_lists():
Fks = select_joints_afk()
ikw = select_joints_aikw()
ikpv = select_joints_ikpv()
print Fks+ikw+ikpv
将对 combine_lists 的调用包装到 functools.partial:
arg1 = 1
arg2 = 2
arg3 = 3
tfunc = functools.partial(combine_lists, arg1, arg2, arg3)
cmds.button(label='IK 2 FK', command=tfunc, width=100)
此外,我认为您可以在此处使用 lambda,但我现在无法对其进行测试,因此无法确定。
我的组合函数似乎只使用我想用作参数的三个中的一个 return。我收到以下错误消息
错误:combine_lists() 正好接受 3 个参数(给定 1 个)
我该如何解决这个问题?
删除对 ikw 和 ikpv 的引用使我不会收到错误。它认为我可以以这种方式使用来自不同功能的多个 return,但也许不能?
我的按钮代码:
cmds.button(label='IK 2 FK', command = combine_lists, width=100)
def select_joints_afk():
Fks = []
del Fks[:]
if cmds.ls(selection = True,type=("transform",'nurbsCurve')):
sel = cmds.ls(sl=True)
fkCtrls = cmds.listRelatives(sel, allDescendents=True, type=("transform",'nurbsCurve'))
Fks = [nurbsCurve for nurbsCurve in fkCtrls if nurbsCurve.startswith('FK') & nurbsCurve.endswith('Ctrl')]
cmds.textFieldButtonGrp(gtF0, edit = True, tx ='' .join(sel),buttonLabel='IK OK',backgroundColor = (.5,.8,.2))
del Fks[1]
del Fks[2]
Fks.extend(sel)
print Fks[0]
print Fks[1]
print Fks[2]
return Fks
else:
text = cmds.confirmDialog( title='Error', message='Must select joint', button=['OK'], defaultButton='Ok', dismissString='No' )
def select_joints_aikw():
ikw = []
del ikw[:]
if cmds.ls(selection = True,type=("transform",'nurbsCurve')):
ikwrist=cmds.ls(selection = True)
ikw = [nurbsCurve for nurbsCurve in ikwrist if nurbsCurve.startswith('IK') & nurbsCurve.endswith('Ctrl')]
cmds.textFieldButtonGrp(gtF1, edit = True, tx ='' .join(ikwrist),buttonLabel='IK OK',backgroundColor = (.5,.8,.2))
print ikw
return ikw
else:
text = cmds.confirmDialog( title='Error', message='Must select joint', button=['OK'], defaultButton='Ok', dismissString='No' )
def select_joints_ikpv():
ikpv = []
del ikpv[:]
if cmds.ls(selection = True,type=("transform",'nurbsCurve')):
ikPvsel = cmds.ls(selection = True)
ikpv = [nurbsCurve for nurbsCurve in ikPvsel if nurbsCurve.startswith('IK') & nurbsCurve.endswith('Ctrl')]
cmds.textFieldButtonGrp(gtF2, edit = True, tx ='' .join(ikPvsel),buttonLabel='IK OK',backgroundColor = (.5,.8,.2))
print ikpv
return ikpv
else:
text = cmds.confirmDialog( title='Error', message='Must select joint', button=['OK'], defaultButton='Ok', dismissString='No' )
def combine_lists(Fks,ikw,ikpv):
Fks = select_joints_afk()
ikw = select_joints_aikw()
ikpv = select_joints_ikpv()
print Fks+ikw+ikpv
你有
def combine_lists(Fks,ikw,ikpv)
这意味着无论何时调用 combine_lists() 都需要传递三个参数.. 即 combine_lists(x, y, z)。看起来你只是在使用 combine_lists 来计算这三件事,你并没有试图传递任何东西..所以就这样做:
def combine_lists():
Fks = select_joints_afk()
ikw = select_joints_aikw()
ikpv = select_joints_ikpv()
print Fks+ikw+ikpv
将对 combine_lists 的调用包装到 functools.partial:
arg1 = 1
arg2 = 2
arg3 = 3
tfunc = functools.partial(combine_lists, arg1, arg2, arg3)
cmds.button(label='IK 2 FK', command=tfunc, width=100)
此外,我认为您可以在此处使用 lambda,但我现在无法对其进行测试,因此无法确定。