我需要Python编程类制作的帮助

我需要Python编程类制作的帮助,python,maya,Python,Maya,我已经编写了一个代码,我想直接从Maya脚本文件夹访问该代码。。 当我试图从托盘访问“poly”或“srfc”时。其上写着“名称未定义”。 我是python编程新手,但我想做一个这样的工具。请在这方面给予帮助。我甚至想把这些都写在一节课上。在这方面也请帮忙 import maya.cmds as mc def win(): if mc.window("filters", exists = True): mc.deleteUI("filters") myWindo

我已经编写了一个代码,我想直接从Maya脚本文件夹访问该代码。。 当我试图从托盘访问“poly”或“srfc”时。其上写着“名称未定义”。 我是python编程新手,但我想做一个这样的工具。请在这方面给予帮助。我甚至想把这些都写在一节课上。在这方面也请帮忙

import maya.cmds as mc
def win():
    if mc.window("filters", exists = True):
        mc.deleteUI("filters")

    myWindow = mc.window("filters", t= "Tools", s = False, rtf= True, wh = (3, 500))
    mc.rowColumnLayout(nc=20)
    mc.button(l = "mesh", w= 30, h= 18, c = "poly()", bgc = (.3,.3,.3))
    mc.showWindow(myWindow)


def poly():
    currentPanel = mc.getPanel(wf = True)
    if mc.modelEditor(currentPanel, q=True, polymeshes = True) == 1:
        mc.modelEditor(currentPanel, e=True, polymeshes = False)
    elif mc.modelEditor(currentPanel, q=True, polymeshes = True) == 0:
        mc.modelEditor(currentPanel, e=True, polymeshes = True)

您正在以字符串形式调用
poly()
函数。只有当poly与调用
win()
的代码在同一名称空间中定义时,这才有效。将这两个函数包装在一个类中可以让它们看到彼此:

class Tool(object):

     def win(self):
         self.myWindow = mc.window("filters", t= "Tools", s = False, rtf= True, wh = (3, 500))
         mc.rowColumnLayout(nc=20)
         mc.button(l = "mesh", w= 30, h= 18, c = self.poly, bgc = (.3,.3,.3))
         mc.showWindow(self.myWindow)


     def poly(self, ignore):
         # ignore is needed because the button always passes an argument
         currentPanel = mc.getPanel(wf = True)
         if mc.modelEditor(currentPanel, q=True, polymeshes = True) == 1:
              mc.modelEditor(currentPanel, e=True, polymeshes = False)
         elif mc.modelEditor(currentPanel, q=True, polymeshes = True) == 0:
              mc.modelEditor(currentPanel, e=True, polymeshes = True)


t = Tool()
t.win()
您还应该直接引用函数对象
poly
,而不是作为字符串引用(注意此处缺少引号)


下面是一个

是否使用其他代码来告诉Maya要执行什么?如果是的话,你也可以发布它吗?是的,“win()”是我执行的命令。然而,它显示了我的窗口,但我无法从我创建的窗口访问我的代码。感谢支持,但我不明白这一点。在课堂上结束后,它仍然不起作用。。错误:#错误:poly()正好取1个参数(2个给定)#类型错误:poly()正好取1个参数(2个给定)也请告诉我是否有任何教程可以帮助我理解maya中使用的类和定义。抱歉,请参见上面的编辑。我的答案中的参考涵盖了连接命令回调所需了解的大部分内容,但这是一个很好的通用资源,如果我从脚本编辑器运行所有脚本,然后使用该窗口,它就会起作用。但是当我试图将这个脚本存储在脚本目录中,然后导入、重新加载并调用Tool命令时,它的say没有定义。请帮助我解决这个问题。如果您将工具保存在文件中并导入,它将成为模块的一部分。您只需要添加“from moduleNameGeoEshere导入工具”,然后调用最后两行