1

我对 Python 比较陌生,需要一些帮助。这也是我在这个网站上的第一篇文章。我正在尝试更改已标记为“Plate”的读取节点中颜色空间旋钮的值。我想稍后使用该值。到目前为止,这是我的代码:

def LabelPlate():
    n = nuke.thisNode()
    if n != None:
        label = n['label'].value()
        n['label'].setValue('Plate')


def LabelLook():
    name= "Plate"
    for node in nuke.allNodes():
        if name == node.knob("label").value():
            return True

def LabelLookTwo():
    name= "Plate"
    for node in nuke.allNodes():
        if name == node.knob("label").value():
            return node.knob("name").value()


def PlateColorspaceSet():
    n = LabelLookTwo()
    if nuke.toNode("n")["colorspace"].value() == "default (sRGB)":
        nuke.toNode("n")["colorspace"].setValue("sRGB")

def LabelQuestion():
    if LabelLook() != True:
        if nuke.ask('Is this Read your main Plate?'):
            LabelPlate()
            PlateColorspaceSet()


nuke.addOnUserCreate(LabelQuestion, nodeClass = 'Read')

所以事件顺序:

  1. 引入读取节点
  2. 询问读取节点是否是您的主要板块

    一个。如果是,将节点标记为“Plate”,继续执行步骤 3
    b。如果否,则引入未标记的读取节点

  3. 将标记为“Plate”的节点中的颜色空间从默认值更改为实际值。

到目前为止,我可以完成前两个步骤。但在第 3 步,我得到

“‘NoneType’对象没有属性‘ getitem ’”

任何想法为什么?有没有更好的方法来获取色彩空间值?

4

1 回答 1

1

我解决了这个问题。

nuke.addOnUserCreate 是我在创建读取节点时调用该函数的地方。问题是,它在一切存在之前运行脚本。所以不是所有的东西都能正常工作,因为 Nuke 中还没有所有东西,所以像我的变量 n = LabelLookTwo() 这样的东西,返回为 None。

使用 addOnCreate 代替在节点之后运行脚本,并且它的默认值已设置和创建。因此,使用它,脚本的其余部分完全按照最初编写的方式运行。

我在哪里找到答案

于 2015-07-07T13:35:06.587 回答