gpt4 book ai didi

python - Maya Python调用模块类函数

转载 作者:太空宇宙 更新时间:2023-11-03 14:38:53 25 4
gpt4 key购买 nike

嘿,我想了解在 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()

干杯,祝大家度过愉快的一天!

最佳答案

您可能想从窗口中删除MyClass.createWindow(),并将其留给调用代码。正如所写的,每次导入模块时,它都会创建一个窗口。最好只将初始化代码放入模块范围内。

这种情况下的问题是您试图像调用函数一样调用该类。如果你只想要类方法,你会这样做

import loadTest

loadTest.MyClass.createWindow()

在Python中,我们通常不需要创建只有类方法的类:您通常会使用模块。在这种情况下:

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 中才有意义。

关于python - Maya Python调用模块类函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46710290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com