We often define a global knobChanged callback on launch -- nuke.addKnobChanged(outsideModule.function, nodeClass="Group"). This of course causes every Group node to trigger a callback BUT we'll hide a knob in the one we're actually targeting and filter it outside of Nuke.

def nodeUpdate():
    n = nuke.thisNode()
    k = nuke.thisKnob()
    if "SecretKnob" in n.knobs():
        if k.name() == "myButton":
            myFunction()

Doing this allows us to use Python buttons with no code inside. It's great for keeping certain node classes consistent across shows.



On 05/16/2013 09:05 AM, Nathan Rusch wrote:
If you have a gizmo, I would go one step further and use the callback registration mechanism instead of the 'knobChanged' knob. Also, if you're reading a file when the panel is shown, I would cache your results and some indicator that the file has been read already. You can provide a 'refresh' button if need be to manually re-read the file and re-cache the data.
-Nathan

*From:* Hugo Léveillé <mailto:hu...@fastmail.net>
*Sent:* Thursday, May 16, 2013 6:14 AM
*To:* Nuke Python discussion <mailto:nuke-python@support.thefoundry.co.uk> *Subject:* Re: [Nuke-python] Two questions about callbacks and writing python I find it easier to edit the code in a dedicated editor. And the gizmo will update live when you save your code while developing. Much faster then copy/pasting the code everytime in the Nuke script editor to set the value again and again...
On Thu, May 16, 2013, at 3:18, Howard Jones wrote:
Is that the best way then? I always write into the knobChanged direct in the node. Though via
s=''' script stuff '''
...['knobChanged'].setValue(s)
What's the advantage of keeping it external?

Howard

On 16 May 2013, at 02:03, Frank Rueter <fr...@beingfrank.info <mailto:fr...@beingfrank.info>> wrote:
You probably want to run the code every time the gizmo's panel is opened, so look into the knobChanged knob. I'd write the python code in an external file and import then execute it inside the knobChanged knob.

This might get you started:
http://pastebin.com/Ca9eMNUQ


On 11/05/13 06:36, thinkinmonkey wrote:
Hello everyone,
I wrote a very simple gizmo in Nuke and I'd love to refine it with your help. The gizmo simply reads an xml file where I stored some data, the user can select a scene/shot from a pulldown choice and he will have the images sequence of that scene/shot.
Everything works, but I'd want to know:

a) When the user create the gizmo from menu, he's forced to click a button on gizmo in order to load the xml file, otherwise the gizmo is not able to load the image sequence. I want the gizmo load the xml file automatically, I tried the callbacks, the "on Create" function, but with no success. Could you tell me how to do that?

b) Just to be sure, I put all python code in a python script button knob: is that right to program? I mean, if I want to write python functions or callbacks that control the entire gizmo, the only solution I have is to write then in a button, but they are executed only when user clicks on it, isn't? There's another way to create a new node/plugin?

Thanks in advance.


_______________________________________________
Nuke-python mailing list
Nuke-python@support.thefoundry.co.uk  
<mailto:Nuke-python@support.thefoundry.co.uk>,http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
_______________________________________________
Nuke-python mailing list
Nuke-python@support.thefoundry.co.uk <mailto:Nuke-python@support.thefoundry.co.uk>, http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
_________________________________________________
Nuke-python mailing list
Nuke-python@support.thefoundry.co.uk <mailto:Nuke-python@support.thefoundry.co.uk>, http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
--
Hugo Léveillé
TD Compositing, Vision Globale
hu...@fastmail.net <mailto:hu...@fastmail.net>

------------------------------------------------------------------------
_______________________________________________
Nuke-python mailing list
Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python


_______________________________________________
Nuke-python mailing list
Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python




This e-mail and any attachments are intended only for use by the addressee(s) 
named herein and may contain confidential information. If you are not the 
intended recipient of this e-mail, you are hereby notified any dissemination, 
distribution or copying of this email and any attachments is strictly 
prohibited. If you receive this email in error, please immediately notify the 
sender by return email and permanently delete the original, any copy and any 
printout thereof. The integrity and security of e-mail cannot be guaranteed.

_______________________________________________
Nuke-python mailing list
Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python

Reply via email to