Ручка Nuke pulldown Choice возвращает целое число вместо строки при использовании getValue () - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь получить getvalue () пользовательского выпадающего выбора. Ручка в nuke, когда я печатаю, она возвращает целое число вместо значения ручки, которое является строкой

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

Я ожидаю, что на выходе будет строка, новыходное значение: 1,0

Ответы [ 2 ]

1 голос
/ 26 мая 2019

Хотя в некоторых случаях оба метода getValue() и value() являются взаимозаменяемыми, вы должны использовать value() метод для строк и getValue() метод для чисел.

В вашем случае естьДоступны три метода для доступа к Enumeration_Knob значениям и один метод для установки новых:

  • getValue() приносит вам число (индексвыбранная пара enum)

  • value() приносит вам строку (имя выбранной пары enum)

  • values() приносит вам список всех строк (все имена)

  • setValue() устанавливает новое значение для ручки (выздесь можно использовать индекс или имя)

Вы можете использовать метод getValue() для получения числовых свойств, таких как scale или rotate:

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

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

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

Чтобы напечатать все имена регуляторов и соответствующие значения выбранного узла, используйте этот метод:

print(nuke.selectedNode())

Для выпадающих меню используются 3 основных метода - getValue(), value() and values(), а также setValue() метод:

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
0 голосов
/ 25 мая 2019

Ответ прост, просто используйте .value () вместо .getValue (), затем он возвращает строку вместо целого числа.

благодаря tk421storm

...