You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NUKE节点的Python代码中使用属性的实际值

问题原因

NUKE触发Python Knob中的代码执行时,会使用独立的运行作用域,和你预先定义name变量的上下文完全隔离,原变量要么已经被销毁,要么不在当前执行的命名空间内,所以直接写print name会抛出变量未定义的错误。

解决方案

根据你的使用场景可以选择两种实现方式:

  • 场景1:需要把变量的固定值写入Knob,后续执行不需要修改值
    你在给Python Knob赋值的时候,用字符串格式化把变量的实际值嵌入到代码字符串里即可,示例代码:
    # 你预先定义的变量
    name = "aa124"
    # Python3版本NUKE用f-string写法
    your_node['你的Python Knob名称'].setValue(f'print("{name}")')
    # Python2版本NUKE用格式化符写法
    your_node['你的Python Knob名称'].setValue('print("%s")' % name)
    
    这种方式最终存储到Knob里的内容就是print("aa124"),和你手动写入可正常执行的代码完全一致。
  • 场景2:后续执行时需要动态获取最新值
    可以先把变量值存储到节点的自定义String Knob(比如命名为custom_name)中,再在Python Knob的代码里直接读取当前节点的Knob值,存储到Python Knob里的代码写为:
    print(nuke.thisNode()['custom_name'].value())
    
    这种方式不需要依赖外部变量,每次执行都会从当前节点的对应Knob读取最新值,适用性更强。

内容的提问来源于stack exchange,提问作者Praway

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 18:51:01