Nuke Python获取if statemens的旋钮值

2024-06-17 15:13:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python比较陌生,需要一些帮助。这也是我在这个网站上的第一篇文章。我试图改变我标记为“Plate”的Read Node中colorspace旋钮的值。稍后我将使用该值。以下是我目前为止的代码:

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. 询问Read node是否是你的主板

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

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

到目前为止,我可以开始前两步了。但在第三步,我得到

"'NoneType' object has no attribute 'getitem'"

有什么想法为什么?有没有更好的方法来获得颜色空间值?在


Tags: name标记nodereadif节点valuedef
1条回答
网友
1楼 · 发布于 2024-06-17 15:13:45

我解决了问题。在

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

而是使用addOnCreate在节点及其默认值设置和创建之后运行脚本。因此,使用此方法,脚本的其余部分将与最初编写的完全相同。在

Where I found the answer

相关问题 更多 >