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

Reply via email to