2017-01-22 7 views
0

예를 들어, 다음과 같이 배치 할 수있는 스크립트를 작성 중입니다. 시작시 모든 사용자 정의 플러그인/gizmos/.nk 파일을 새 메뉴에로드하는 meny.py 파일 지정된 폴더의 하위 디렉토리로 작업하여 카테고리별로 항목을 정렬하는 하위 메뉴를 작성합니다. 문제 : 메뉴와 하위 메뉴 및 항목을 제자리에 생성하지만 항목의 이름은 다르지만 실행될 때 완전히 동일한 노드를 만듭니다. 나는 거기에서 일어나고있는 것을 얻지 못한다.nuke.addCommand 메소드에 목록 항목을 추가하는 것은 항목 중 하나만 취합니까?

import os 

pluginpath = 'C:\Users\Workstation\.nuke\userplugins' 
#print nuke.pluginPath() 

customMenu = nuke.menu('Nodes').addMenu('UserPlugIns') 

for dirpath, dirnames, filenames in os.walk (pluginpath): 
    print ('') 
    print ('CurrentPath: ' , dirpath) 
    nuke.pluginAddPath(dirpath) 
    dirname = os.path.split(dirpath)[-1] 
    subMenu = customMenu.addMenu(dirname) 
    #print ('Directories: ' , dirnames) 
    #print ('Filenames: ' , filenames) 
    for x in filenames: 
     print x 
     subMenu.addCommand(x, lambda: nuke.createNode('{}'.format(x))) 

내가 문제를 일으키는 마지막 줄 추측을 : 여기

는 내가 지금까지 가지고있는 것입니다. 어떤 아이디어?

답변

1

의 람다에서 위험을 알고, 그래서 당신은 아마 사용하기 시작 그 부분

from functools import partial 
.... 
.... 
........ 
     subMenu.addCommand(x, partial(nuke.createNode('{}'.format(x))))