我一直在读这本书,但是我在网上找不到任何解决方法来解决我的问题。我想我的缩进是对的,但是我仍然有名字错误。有人能帮我一下吗。 这个脚本应该在maya中运行一个新的面板,这有点正常,但是这个错误确实很烦人。
class PanelWindow( object ):
def __init__( self, name, title, namespace=__name__ ):
self.__name__ = name
self._title = title
self.instance = str(namespace) + '.' + self.__name__
if not pm.scriptedPanelType(self.__name__, q = True, ex = True):
pm.scriptedPanelType(self.__name__, u = True)
jobCmd = 'python(\\\"%s._setup()\\\")' % self.instance
job = "scriptJob -replacePrevious -parent \"%s\" -event \"SceneOpened\" \"%s\";" % ( self.__name__, jobCmd )
mel.eval(job)
pm.scriptedPanelType( self.__name__, e = True,
unique=True,
createCallback = 'python("%s._createCallback()")' % self.instance,
initCallback = 'python("%s._initCallback()" )' % self.instance,
addCallback = 'python("%s._addCallback()" )' % self.instance,
removeCallback = 'python("%s._removeCallback()")' % self.instance,
deleteCallback = 'python("%s._deleteCallback()")' % self.instance,
saveStateCallback = 'python("%s._deleteCallback()")' % self.instance
)
def _setup(self):
"""Command to be call for new scene"""
panelName = pm.sceneUIReplacement( getNextScriptedPanel=(self.__name__, self._title) )
if panelName == '':
try:
panelName = pm.scriptedPanel( mbv=1, unParent=True, type=self.__name__, label=self._title )
except:
pass
else:
try:
label = panel( self.__name__, query=True, label=True )
pm.scriptedPanel( self.__name__, edit=True, label=self._title )
except:
pass
def _addCallback(self):
"""Create UI and parent any editors."""
print 'ADD CALLBACK'
def show( self ):
mel.eval('tearOffPanel "%s" %s true;' % (self._title, self.__name__) )
global test
test = PanelWindow('myName', 'Light')
test.show()
# NameError: name '__main__' is not defined #
# Error: line 1: name '__main__' is not defined
# Traceback (most recent call last):
# File "<maya console>", line 1, in <module>
# NameError: name '__main__' is not defined #
在执行Python脚本时,Python解释器将名为
__name__
的变量设置为正在执行的模块的字符串值"__main__"
(通常此变量包含模块名)。通常检查此变量的值,以查看您的模块是作为库导入的,还是直接执行的。因此,您经常在模块末尾看到这段代码:
我怀疑您把字符串引号从
'__main__'
中去掉了,这就给出了您看到的名称错误你的问题是一些东西,我只包括了一些基本的部分,因为其余的不需要。
问题一是
__name__
,如果引用了这个,我们就不会有问题了,因为它只是一个名字,没有什么特别的,我只想将它重命名为name
。问题二是面板/面板类型上的名称重复。即:
玛雅不喜欢panelType和panel都有相同的名称。
所以:
相关问题 更多 >
编程相关推荐