Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maya Python:只接受1个参数(给定2个)_Python_Class_User Interface_Maya - Fatal编程技术网

Maya Python:只接受1个参数(给定2个)

Maya Python:只接受1个参数(给定2个),python,class,user-interface,maya,Python,Class,User Interface,Maya,我对Maya中的脚本编写非常陌生。我一直在开发一个相对简单的工具,它可以创建一个简单的UI,用户可以使用它将一个对象约束到另一个对象,但在对象被约束后仍然可以自由移动该对象。这是使用嵌套定位器完成的 如果我运行以下代码,我会得到错误消息: “#错误:attachObject()正好接受1个参数(给定2个)#” 但是,如果我简单地向def attachObject方法添加另一个参数,如下所示……代码将按预期工作 #This method attaches the constraint target

我对Maya中的脚本编写非常陌生。我一直在开发一个相对简单的工具,它可以创建一个简单的UI,用户可以使用它将一个对象约束到另一个对象,但在对象被约束后仍然可以自由移动该对象。这是使用嵌套定位器完成的

如果我运行以下代码,我会得到错误消息:

“#错误:attachObject()正好接受1个参数(给定2个)#”

但是,如果我简单地向def attachObject方法添加另一个参数,如下所示……代码将按预期工作

#This method attaches the constraint target to the target using locators.        
def attachObject(self, huh):
    #Check that a target and constraint target have been specified
    if ( self.target == None ) | ( self.constraintTarget == None ):
        print "Make sure you have selected a *Target* and an *Object or Control to be Constrained*" 
        print "self.target = " + self.target + "\n"
        print "self.constraintTarget = " + self.constraintTarget + "\n"
    else:
        #Create locator named after constraint target
        targetLoc = mc.spaceLocator( name = self.constraintTargetName )
        #Create locator named constraintTargetName + _MANIP
        targetManipLoc = mc.spaceLocator( name = ( self.constraintTargetName + "_MANIP" ) )
        #Parent MANIP to constraint target locator
        mc.parent ( targetManipLoc, targetLoc )

        #Parent Constrain constraint target to _MANIP locator with maintain offset OFF
        mc.parentConstraint( targetManipLoc, self.constraintTarget, maintainOffset = False )

        #Parent Constrain parent locator to target
        mc.parentConstraint( self.target, targetLoc, maintainOffset = False ) 

您的def
attachObject
写入时不带参数。在本例中,“self”作为类调用的一部分自动传入,因此这是第一个参数。当您将它挂接到按钮回调时,它也会自动传入一个参数——这是参数2。您可以通过打印'huh'变量进行验证,它将始终显示为
False

许多人使用命名值的约定,这些值应该用一个下划线(389;)忽略,因此: def attachObject(自) #

 #or if you might get multiple ignore arguments:
def attachObject(self, *_):
    #....
其他人使用忽略或*忽略:

def attachObject(self, *ignore):
    #....

TLDR:这是预期的行为

您的def
attachObject
写入时不带参数。在本例中,“self”作为类调用的一部分自动传入,因此这是第一个参数。当您将它挂接到按钮回调时,它也会自动传入一个参数——这是参数2。您可以通过打印'huh'变量进行验证,它将始终显示为
False

许多人使用命名值的约定,这些值应该用一个下划线(389;)忽略,因此: def attachObject(自) #

 #or if you might get multiple ignore arguments:
def attachObject(self, *_):
    #....
其他人使用忽略或*忽略:

def attachObject(self, *ignore):
    #....

TLDR:这是预期的行为

您的def
attachObject
写入时不带参数。在本例中,“self”作为类调用的一部分自动传入,因此这是第一个参数。当您将它挂接到按钮回调时,它也会自动传入一个参数——这是参数2。您可以通过打印'huh'变量进行验证,它将始终显示为
False

许多人使用命名值的约定,这些值应该用一个下划线(389;)忽略,因此: def attachObject(自) #

 #or if you might get multiple ignore arguments:
def attachObject(self, *_):
    #....
其他人使用忽略或*忽略:

def attachObject(self, *ignore):
    #....

TLDR:这是预期的行为

您的def
attachObject
写入时不带参数。在本例中,“self”作为类调用的一部分自动传入,因此这是第一个参数。当您将它挂接到按钮回调时,它也会自动传入一个参数——这是参数2。您可以通过打印'huh'变量进行验证,它将始终显示为
False

许多人使用命名值的约定,这些值应该用一个下划线(389;)忽略,因此: def attachObject(自) #

 #or if you might get multiple ignore arguments:
def attachObject(self, *_):
    #....
其他人使用忽略或*忽略:

def attachObject(self, *ignore):
    #....

TLDR:这是预期的行为

按钮作为回调函数
attachObject
被赋予,按下按钮时将调用该函数。Maya将传入它认为可能有用的各种参数,并且无法告诉它您想要哪些参数。所以,你只需要做好准备,应对它可能对你造成的任何影响。在这种情况下,按钮似乎用一个参数调用其
命令
回调。要使函数无论给定多少个参数都能处理,请使用Python的变量参数列表语法:

def attachObject(*args, **kw):

现在,
args
是一个包含所有传递的位置参数的元组,
kw
是一个包含所有关键字参数的字典。

按钮作为回调函数提供给函数
attachObject
,按下按钮时将调用该函数。Maya将传入它认为可能有用的各种参数,并且无法告诉它您想要哪些参数。所以,你只需要做好准备,应对它可能对你造成的任何影响。在这种情况下,按钮似乎用一个参数调用其
命令
回调。要使函数无论给定多少个参数都能处理,请使用Python的变量参数列表语法:

def attachObject(*args, **kw):

现在,
args
是一个包含所有传递的位置参数的元组,
kw
是一个包含所有关键字参数的字典。

按钮作为回调函数提供给函数
attachObject
,按下按钮时将调用该函数。Maya将传入它认为可能有用的各种参数,并且无法告诉它您想要哪些参数。所以,你只需要做好准备,应对它可能对你造成的任何影响。在这种情况下,按钮似乎用一个参数调用其
命令
回调。要使函数无论给定多少个参数都能处理,请使用Python的变量参数列表语法:

def attachObject(*args, **kw):

现在,
args
是一个包含所有传递的位置参数的元组,
kw
是一个包含所有关键字参数的字典。

按钮作为回调函数提供给函数
attachObject
,按下按钮时将调用该函数。Maya将传入它认为可能有用的各种参数,并且无法告诉它您想要哪些参数。所以,你只需要做好准备,应对它可能对你造成的任何影响。在这种情况下,按钮似乎用一个参数调用其
命令
回调。要使函数无论给定多少个参数都能处理,请使用Python的变量参数列表语法:

def attachObject(*args, **kw):
现在,
args
是一个包含所有传递的位置参数的元组,
kw
是一个包含所有关键字参数的字典