0

基本上我目前正在尝试做的是使用 python 在 Nuke 中设置一个脚本,该脚本获取用户选择的节点并向它们添加 shuffle 节点,以实现简单的合成工作流程。但是,我坚持让 Nuke 将随机播放添加到选定的节点上。选择时它适用于 1 个节点,但如果选择了多个节点,则它仅适用于选择的第一个节点。我问了一个朋友,她说试试while循环,所以代码如下:

while True:
    if n in nuke.selectedNodes():
        name = n.name()
        node = nuke.toNode(name)
        blue.setInput(0,node)
        green.setInput(0,node)
        red.setInput(0,node)
    except StopIteration :
        break

这一切都很好,直到除了部分。我在没有异常的情况下运行了脚本,它冻结了 Nuke,这表明它正在无限运行,但我需要它停止。Nuke 告诉我 except 是无效的语法。有谁知道我该如何解决这个问题或为我正在尝试的流程创建一个更好的解决方法?

4

2 回答 2

1

也许您应该考虑一下自己在做什么,而不是仅仅将语法扔到问题上并希望它消失。except没有try块就没有意义,而且你没有分配到n任何地方。大概你的意思是这样的:

for n in nuke.selectedNodes():
    name = n.name()
    node = nuke.toNode(name)
    blue.setInput(0,node)
    green.setInput(0,node)
    red.setInput(0,node)

StopIteration如果您使用这样的迭代器,则无需捕获。

于 2013-03-06T01:32:54.130 回答
0

使用名称捕获异常的正确语法<exception_name>是:

try:
    #code here...
except <exception_name>:
    #code here...

编辑:
它接缝你的代码还有其他问题......

于 2013-03-05T23:48:05.890 回答