加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – NameError:名称’__main__’未定义

发布时间:2020-12-20 12:30:46 所属栏目:Python 来源:网络整理
导读:我一直在这里阅读,但我无法在网上找到解决我问题的任何解决方案.我想我的缩进是正确的,但我仍然得到名称错误.有人可以帮助我. 这个脚本应该在maya中运行一个新的面板,它的工作类型,但错误真的很烦人. class PanelWindow( object ): def __init__( self,name,
我一直在这里阅读,但我无法在网上找到解决我问题的任何解决方案.我想我的缩进是正确的,但我仍然得到名称错误.有人可以帮助我.
这个脚本应该在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 #

解决方法

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

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

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

pm.scriptedPanelType(self.__name__,u = True)
pm.scriptedPanel( self.__name__,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,title):

        self._name = name
        self._title = title
        self.panelTypeName = self._name + "Type"



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

        if not pm.scriptedPanel(self._title,exists=True):
            ## Only allows one instance
            pm.scriptedPanel(self._title,menuBarVisible=1,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()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读