使用 Python 将选定的节点名称放入 Nuke 中的列表或元组中

Get selected node names into a list or tuple in Nuke with Python

我正在尝试在 Nuke 中使用 Python 获取选定节点的名称列表。 我试过:

for s in nuke.selectedNodes():
    n = s['name'].value()
    print n

这给了我所选节点的名称,但作为单独的字符串。 我无法对它们做任何事情来组合每个字符串。如果我 选择了三个合并,在 Nuke 脚本编辑器中我得到:

结果:Merge3 合并2 合并 1

如果我将最后一个变量 n 括在方括号中,我得到:

Result: ['Merge3']
['Merge2']
['Merge1']

这就是我知道它们是独立字符串的方式。我找到了另一种方法 return 选定的节点。我用过:

s = nuke.tcl("selected_nodes")
print s

我得到了奇怪的名字,比如 node3a7c000,但这些名字在任何地方都有效 调用一个节点,例如 nuke.toNode() 并且它们都在一条线上。我 试图将这些结果强制放入列表或元组中,如下所示:

s = nuke.tcl("selected_nodes")

print s

结果:node3a7c000 node3a7c400 node3a7c800

s = nuke.tcl("selected_nodes")

s2 = s.replace(" ","', '")

s3 = "(" + "'" + s2 + "'" + ")"

print s3

结果:('node3a7c000', 'node3a7c400', 'node3a7c800')

我的结果看起来具有元组的标准构造,但如果我尝试 从元组中调用第一个值,我得到一个括号。这个 就好像我创建的元组仍然是一个字符串。

我能做些什么来收集选定节点的列表或元组 名字?我不确定我做错了什么,这似乎是我的最后一次 解决方案应该有效。

当您遍历每个节点时,您需要将其名称添加到列表 ([]),然后 return。例如:

names = []
for s in nuke.selectedNodes():
    n = s['name'].value()
    names.append(n)
print names

这会给你:

# Result: ['Merge3', 'Merge2', 'Merge1']

如果你熟悉列表理解,你也可以使用一个在一行中制作 names

names = [s['name'].value() for s in nuke.selectedNodes()]