python error in main script,在Python中NameError:名称’__main__’未定义

我一直在这里阅读,但我无法在网上找到解决我问题的任何解决方案.我想我的缩进是正确的,但我仍然得到名称错误.有人可以帮助我.

这个脚本应该在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 "", line 1, in

# NameError: name '__main__' is not defined #

你的问题是一些问题,我只包括代码的一些基本部分,因为其余的不需要.

问题一是__name__,如果引用它,我们就不会有问题,因为它只是一个名字而不是什么特别的,我只是将其重命名为name.

问题二是面板/面板类型上的重复名称. IE:

pm.scriptedPanelType(self.__name__, u = True)

pm.scriptedPanel( self.__name__, edit=True, label=self._title )

Maya不喜欢panelType和面板具有相同的名称.

所以:

import maya.cmds as cmds

import pymel.core as pm

import maya.mel as mel

class PanelWindow( object ):

def __init__(self, name, title):

self._name = name

self._title = title

self.panelTypeName = self._name + "Type"

if not pm.scriptedPanelType(self.panelTypeName, query=True, exists=True):

pm.scriptedPanelType(self.panelTypeName, unique=True)

if not pm.scriptedPanel(self._title, query=True, exists=True):

## Only allows one instance

pm.scriptedPanel(self._title, menuBarVisible=1, unParent=True, type=self.panelTypeName, label=self._title )

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) )

PanelWindow('lightControlType1', 'lightControl').show()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值