Whoops -- hasty paste error... apologies -- please find full example script
below:
### Test panel to demonstrate issues when manipulating dynaically added knobs
import nukescripts, nuke
class TEST_O_Panel(nukescripts.PythonPanel):
def __init__( self ):
nukescripts.PythonPanel.__init__( self, 'Test-O-maticĀ®',
'com.j3pnyc.Test-O-matic')
# CREATE BASE KNOBS THEN ADD THEM
self.test = nuke.Boolean_Knob('test','Check to test')
self.test.setFlag( nuke.STARTLINE )
self.addKnob( self.test )
### Defining these here alone causes "knob already attached to a node" error
when removed and re-added
# self.a = nuke.PyScript_Knob('a', "Button A")
# self.a.setFlag( nuke.STARTLINE )
# self.b = nuke.PyScript_Knob('b', "Button B")
# self.b.setEnabled(False)
self.added=0
def addButtons(self):
self.a = nuke.PyScript_Knob('a', "Button A")
self.a.setFlag( nuke.STARTLINE )
self.b = nuke.PyScript_Knob('b', "Button B")
self.b.setEnabled(False)
self.addKnob( self.a )
self.addKnob( self.b )
self.added=1
def removeButtons(self):
self.removeKnob( self.a )
self.removeKnob( self.b )
self.added=0
def knobChanged( self, knob ):
if knob == (self.test):
if self.test.value() == True:
if self.added==1:
self.removeButtons()
self.addButtons()
else:
if self.added==1:
self.removeButtons()
### make sure self.a exists so panel doesn't throw an error
elif self.added==1 and knob == self.a:
self.b.setEnabled(True)
TEST_O_Panel().showModalDialog()
_______________________________________________
Nuke-python mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python