我正在尝试根据场景中存在的灯光数量在窗口中创建按钮。 当我按下创建按钮时,我收到此错误(#RuntimeError:未指定对象名称。#):
回溯(最近一次调用最后一次):文件“C:\ Program 文件\欧特克\ Maya2015 \ Python的\ LIB \站点包\ pymel \内部\ factories.py” 第779行,在回调中 res = origCallback(* newargs)
文件“”,第31行,在lightLst中
文件“”,第17行,在updateList中
文件“C:\ Program 文件\欧特克\ Maya2015 \ Python的\ LIB \站点包\ pymel \内部\ factories.py” 第806行,在newUiFunc中 返回beforeUiFunc(* args,** kwargs)
文件“C:\ Program 文件\欧特克\ Maya2015 \ Python的\ LIB \站点包\ pymel \内部\ factories.py” 第947行,在newFuncWithReturnFunc中 res = beforeReturnFunc(* args,** kwargs)
文件“C:\ Program 文件\欧特克\ Maya2015 \ Python的\ LIB \站点包\ pymel \内部\ 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()
如果有人可以为它带来一些启示,我真的很感激它!
答案 0 :(得分:1)
你必须写pm.button(label="CREATE", command = self.lightLst)
,你必须将self
作为你班级中方法的第一个参数传递。