这是我的问题: 我想为所选的每个节点创建一个CheckBox。 我已经设法为每个节点创建了具有正确名称的CheckBox,但问题是在复选框中选中它们并打印结果只返回选择的第一个节点或者一个bolean答案(True或False),no重要的是选中了什么复选框。我无法找到答案。 谢谢你的一切!
import nuke
nodeNames = [n.name() for n in nuke.allNodes('Write')]
names = []
for s in nuke.allNodes('Write'):
n = s['name'].value()
names.append(n)
#print names
#len(names)
writeNodes = ( ", ".join( str(e) for e in names ) )
p = nuke.Panel ('TEST')
for items in names:
de = p.addBooleanCheckBox(items,'True')
p.show()
答案 0 :(得分:2)
如果要从面板返回信息,则需要创建自己的PythonPanel子类。像这样:
class WritesPanel( nukescripts.PythonPanel ):
def __init__( self , nodeNames):
nukescripts.PythonPanel.__init__( self, "Write Nodes", "unique.panel.id" )
self.nodeNames=nodeNames
for nodeName in nodeNames:
self.k = nuke.Boolean_Knob(nodeName, nodeName)
self.addKnob( self.k )
# The next function shows the dialog as a modal dialog. Doing this
# automatically adds the 'OK' and 'Cancel' buttons to the dialog.
def showModalDialog( self ):
result = nukescripts.PythonPanel.showModalDialog( self )
if result:
results={}
for nodeName in self.nodeNames:
results[nodeName]=self.knobs()[nodeName].value()
return results
else:
return None
# The following function calls WritesPanel
def launchWritesPanel(nodeNames):
return WritesPanel(nodeNames).showModalDialog()
使用您的nodeNames列表调用launchWritesPanel
,如果用户按下OK,面板将返回{nodeName:True/False}
字典,如果用户取消,则返回None
。