0

我正在编写一个可以放置在例如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)))

我想这是导致问题的最后一行。有任何想法吗?

4

1 回答 1

1

这知道 lambda 的危险,所以你可能开始使用 partial

from functools import partial
....
....
........
        subMenu.addCommand(x, partial(nuke.createNode('{}'.format(x))))
于 2017-02-09T20:24:13.720 回答