maya python获取和使用结果复选框

2024-10-01 07:28:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个脚本,要求用户使用复选框选择对称轴。然后我希望在另一个函数中使用该结果来创建镜像工具。到目前为止,当我试图查询该复选框时,始终收到以下错误:

RuntimeError: file line 81: Object xAxisBox not found

我是一个初学者,所以如果这是显而易见的,我道歉,但我错在哪里呢?
相关代码如下:

    xAxisBox = cmds.checkBox(l="x")
    yAxisBox = cmds.checkBox(l="y")
    zAxisBox = cmds.checkBox(l="z")
    btAxis=cmds.button( label = "Do the thing!", command = "Blendy();")

    def Blendy ():

    xCheck = cmds.checkBox('xAxisBox', query=True, value = True)
    yCheck = cmds.checkBox('yAxisBox', query=True, value = True)
    zCheck = cmds.checkBox('zAxisBox', query=True, value = True)
    print xCheck
    print yCheck
    print zCheck

Tags: 脚本truevaluequery复选框printcmdscheckbox
2条回答

如果使用cmds,则可以引用硬编码的ui名称:

xAxisBox = cmds.checkBox("xAxisBox", l="x")
yAxisBox = cmds.checkBox("yAxisBox", l="y")
zAxisBox = cmds.checkBox("zAxisBox", l="z")
btAxis = cmds.button(label="Do the thing!", command=Blendy)

def Blendy ():

    xCheck = cmds.checkBox('xAxisBox', query=True, value=True)
    yCheck = cmds.checkBox('yAxisBox', query=True, value=True)
    zCheck = cmds.checkBox('zAxisBox', query=True, value=True)
    print xCheck
    print yCheck
    print zCheck

但是使用pymel,您可以尝试不用硬编码:

^{pr2}$

您可以导入pymelimport pymel.core as pm

但如果您要使用pymel,我建议您重写Blendy函数,如下所示:

def Blendy(xbox, ybox, zbox):
    print xbox.getValue(), ybox.getValue(), zbox.getValue()

最后,同样重要的是,您可以使用类来存储值

neelz从其他资源得到的回答是: 使用模块partial该方案与回调类似:

from functools import partial
cmds.checkBox(onCommand=partial(func_without_parenthesizes, arg, arg))

我没有Maya,所以我不能为您测试这个,但是看看another question的答案,您似乎需要使用实际的python变量,而不是xAxisBox,而不是{}),如下所示:

xCheck = cmds.checkBox(xAxisBox, query=True, value = True)

相关问题 更多 >