1

シーンに存在するライトの数に応じて、ウィンドウにボタンを作成しようとしています。作成ボタンを押すと、このエラーが発生します ( # RuntimeError: オブジェクト名が指定されていません。 # ) :

トレースバック (最新の呼び出しが最後): ファイル "C:\Program Files\Autodesk\Maya2015\Python\lib\site-packages\pymel\internal\factories.py"、779 行目、コールバック内 res = origCallback( *newargs )

ファイル ""、31 行目、lightLst 内

ファイル ""、17 行目、updateList 内

ファイル「C:\Program Files\Autodesk\Maya2015\Python\lib\site-packages\pymel\internal\factories.py」、806 行目、newUiFunc で beforeUiFunc(*args, **kwargs) を返す

ファイル「C:\Program Files\Autodesk\Maya2015\Python\lib\site-packages\pymel\internal\factories.py」、行 947、newFuncWithReturnFunc res = beforeReturnFunc(*args, **kwargs)

ファイル「C:\Program Files\Autodesk\Maya2015\Python\lib\site-packages\pymel\internal\pmcmds.py」、134 行目、wrappedCmd res = new_cmd(*new_args, **new_kwargs)

RuntimeError: オブジェクト名が指定されていません。#

私はちょっと行き詰まっており、自分に合った答えが見つかりません。コードは次のとおりです。

import maya.cmds as cmds
import maya.mel as mel
import pymel.core as pm

class createWindowClass(object): 
    def __init__(self, *args):
        pass
    def show(self):
        self.createWindow()

    def turnOn(totalLgt, *args):
        print "Enter turnOn"

    def turnSolo(totalLgt, *args):
        print "Enter turnSolo"

    def updateList(name, totalLgt, *args):
        print "update %s" % name

        self.button = pm.button(label="ON", e=True, command = lambda *args: turnOn(totalLgt))
        self.button = pm.button(label="SOLO", e=True, command = lambda *args: turnSolo(totalLgt))

    def lightLst(*args):
        totalLgt = 0 

        #list all lights in scene
        lis = pm.ls(type='light')
        print lis
        for lgt in lis: 
           totalLgt += 1
           nameLgt = lgt.longName()
           name = nameLgt.split("|")[1]
           print name
           updateList(name, totalLgt)

    #CREATE WINDOW 
    def createWindow(self):
        windowID = 'Light Control'
        if pm.window(windowID, exists = True):
            pm.deleteUI(windowID)

        pm.window(windowID, title = "Modify Lights", width = 100, sizeable = True)
        pm.rowColumnLayout(numberOfColumns=1, columnWidth=[(10,120)], columnOffset=[10,"right",5])
        pm.text(label=" ********  Light list ******** \n")
        pm.button(label="CREATE", command = lightLst)
        pm.text(label= " \n ***************************** \n ")
        window_obj = pm.window(windowID)
        window_obj.show()

cls = createWindowClass()
cls.show()

誰かがそれに光を当てることができれば、私は本当に感謝しています!

4

1 に答える 1