Maya Python 调用模块 class 函数
Maya Python call modul class functions
嘿,我想了解在 Maya 中使用 Python 导入和重新加载脚本的过程。
我有以下代码抛出以下错误:
# NameError: name 'MyClass' is not defined #
它创建了 window 但是当我按下按钮时它给出了上面的错误。如果有人能帮助我解决我在这里所缺少的问题,那就太好了。
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()
干杯,希望大家度过愉快的一天!
您可能想从 window 中删除 MyClass.createWindow()
,并将其留给调用代码。如所写,每次您 导入 模块时,它都会创建一个 window。最好只将初始化代码放入模块范围。
本例中的问题是您试图将 class 当作一个函数来调用。如果你只想要 class 方法,你可以这样做
import loadTest
loadTest.MyClass.createWindow()
在 Python 中,我们通常不需要做只有 class 方法的 make classes:通常您会使用模块。在这种情况下:
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()
与 class 相比,模块是对相关功能进行分组的更好工具。如果 class 包含一些持久数据,类 仅在 Python 中有意义。
嘿,我想了解在 Maya 中使用 Python 导入和重新加载脚本的过程。
我有以下代码抛出以下错误:
# NameError: name 'MyClass' is not defined #
它创建了 window 但是当我按下按钮时它给出了上面的错误。如果有人能帮助我解决我在这里所缺少的问题,那就太好了。
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()
干杯,希望大家度过愉快的一天!
您可能想从 window 中删除 MyClass.createWindow()
,并将其留给调用代码。如所写,每次您 导入 模块时,它都会创建一个 window。最好只将初始化代码放入模块范围。
本例中的问题是您试图将 class 当作一个函数来调用。如果你只想要 class 方法,你可以这样做
import loadTest
loadTest.MyClass.createWindow()
在 Python 中,我们通常不需要做只有 class 方法的 make classes:通常您会使用模块。在这种情况下:
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()
与 class 相比,模块是对相关功能进行分组的更好工具。如果 class 包含一些持久数据,类 仅在 Python 中有意义。