嘿,我想了解在Maya中使用Python导入和重装脚本的过程。
我有以下代码抛出以下错误:
# NameError: name 'MyClass' is not defined #
它会创建窗口但是当我按下按钮时它会给我上面的错误。如果有人能帮助我,我会在这里失踪,那会很棒。
import maya.cmds as cmds
from functools import partial
class MyClass():
@classmethod
def createWindow(cls):
windowID = 'window'
if cmds.window(windowID, exists = True):
cmds.deleteUI('window')
window = cmds.window(windowID, title="Blast", iconName='Blast', widthHeight=(400, 200) )
cmds.frameLayout( label='')
cmds.button( label='Playblast' ,command= 'MyClass.createPlayblast()')
cmds.showWindow( window )
@classmethod
def createPlayblast(cls):
cmds.playblast( f= "playblast", fmt= "image")
print "hallo"
MyClass.createWindow()
我这样称呼我的模块:
# call loadTest
import sys
Dir = 'S:/people/Jan-Philipp/python_scripts'
if Dir not in sys.path:
sys.path.append(Dir)
try: reload(loadTest)
except: from loadTest import MyClass
loadTest.MyClass()
干杯,希望你们都过得愉快!
答案 0 :(得分:1)
您可能希望从窗口中删除MyClass.createWindow()
,并将其留给调用代码。如上所述,每次导入模块时,它都会创建一个窗口。最好只将初始化代码放入模块范围。
在这种情况下的问题是你试图像调用函数一样调用类。如果你只想要classmethod,你可以这样做
import loadTest
loadTest.MyClass.createWindow()
在Python中,我们通常不需要做只有类方法的make类:模块通常是你使用的。在这种情况下:
import maya.cmds as cmds
from functools import partial
def createWindow():
windowID = 'window'
if cmds.window(windowID, exists = True):
cmds.deleteUI('window')
window = cmds.window(windowID, title="Blast", iconName='Blast', widthHeight=(400, 200) )
cmds.frameLayout( label='')
cmds.button( label='Playblast' ,command= createPlayblast)
cmds.showWindow( window )
def createPlayblast():
cmds.playblast( f= "playblast", fmt= "image")
print "hallo"
和
import loadTest
loadTest.createWindow()
模块是分组相关功能而不是类的更好工具。如果类包含一些持久数据,那么只有Python才有意义。