Nuke 下拉选择旋钮 returns 使用 getValue() 时使用整数而不是字符串

Nuke pulldown Choice knob returns integer instead of string when used getValue()

我正在尝试在 nuke 中获取自定义下拉选择旋钮的值(),当我打印它时 returns 整数而不是旋钮值,它是一个字符串

ks = nuke.toNode('nodename').knob('pulldownchoice').getValue()
print ks

我希望输出是字符串,但我得到的输出是 1.0

答案很简单,只需使用 .value() 而不是 .getValue(),然后 returns 字符串而不是整数。

感谢 tk421storm

虽然在某些情况下 getValue()value() 两种方法可以互换,但您必须对字符串使用 value() 方法,对数字使用 getValue() 方法。

In your case there are three methods available for accessing Enumeration_Knob values and one method for setting new ones:

  • getValue() 给你带来一个数字(枚举选择对的索引)

  • value() 给你带来一个字符串(枚举选择对的名称)

  • values() 为您带来所有字符串的列表(所有名称)

  • setValue() 为旋钮设置新值(您可以在此处使用索引或名称)

You can use getValue() method for getting numeric properties like scale or rotate:

nuke.toNode('Transform1').knob('rotate').getValue()

nuke.toNode('Transform1')['rotate'].getValue()

nuke.selectedNode()['rotate'].getValue()

要打印所选节点的所有旋钮名称和相应值,请使用此方法:

print(nuke.selectedNode())

For pulldown menus 3 main methods are used – getValue(), value() and values() as well as setValue() method:

getValue()

g = nuke.toNode('Transform1')['filter'].getValue()
print(g)

# getValue() method brings properties' index (because it's enumerator)
# If your filter="Notch" getValue() brings 7.0 – i.e. eight element

# Result: 7.0

值()

v = nuke.toNode('Transform1')['filter'].value()
print(v)

# value() method brings a name of a chosen filter

# Result: Notch

值()

vv = nuke.toNode('Merge1')['bbox'].values()
print(vv)

# values() method brings a list of all strings stored in enum

# Result: ['union', 'intersection', 'A', 'B']

setValue()

s1 = nuke.toNode('Merge2')['operation'].setValue(0)

# setValue() method sets a new existing value in enum with index 0

# Result: atop

s2 = nuke.toNode('Merge3')['operation'].setValue("xor")

# setValue() method sets a new existing value in enum with name "xor"

# Result: xor