我正在写一个可以放在例如meny.py文件在启动时将所有自定义插件/ gizmos / .nk文件加载到新菜单中。它应该与指定文件夹中的子目录一起使用,以创建子菜单以按类别对项目进行排序。 问题:它会创建菜单及其子菜单以及适当的项目,但是当项目的名称不同时,它们会在执行时创建完全相同的节点。我不知道那里发生了什么。
这是我到目前为止所做的:
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)))
我想这是导致问题的最后一行。有什么想法吗?
答案 0 :(得分:1)
他们知道lambda的危险,所以你可能会开始使用部分
from functools import partial
....
....
........
subMenu.addCommand(x, partial(nuke.createNode('{}'.format(x))))