2017-01-22 79 views
0

我在寫一個腳本,可以放在例如meny.py文件在啓動時將所有自定義插件/ gizmos/.nk文件加載到新菜單中。它應該與指定文件夾中的子目錄一起工作,以創建子菜單以按類別排序項目。 問題:它創建菜單及其子菜單以及項目,但是項目名稱不同時,它們在執行時會創建完全相同的節點。我不知道那裏發生了什麼。將列表項添加到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))))