Yes, those will all do the same thing.
-Nathan
From: Matthew Doll
Sent: Monday, November 17, 2014 2:26 PM
To: Nuke Python discussion
Subject: Re: [Nuke-python] "lambda" or \"xyz\"
OK cool I think I understand... to confirm then, these three examples are all
equivalent:
m.addCommand("Add My Slate", "nuke.createNode('mySlate')")
m.addCommand("Add My Slate", "nuke.createNode(\"mySlate\")")
m.addCommand("Add My Slate", lambda: nuke.createNode("mySlate"))
Where 'mySlate' is a gizmo sourced in the plugin_path.
Is that right? I have been using the first syntax for years, the others seem
more complicated than necessary if indeed they're equivalent.
Thanks for the tips!
-Matt
On Mon, Nov 17, 2014 at 1:51 PM, Nathan Rusch <[email protected]> wrote:
The first form uses a string argument, and the backslashes are there to
escape the double quotes inside other double quotes. You could replace either
the inner or outer quote pairs with single quotes in that example and get rid
of the backslashes.
The second example (using "lambda: ") creates an anonymous function that
takes no arguments and which just calls `nuke.createNode("Blur")` when called,
and then binds the resulting function to the menu command.
If you use the string form, the string will be exec'ed when the menu command
is invoked. If you use a callable, it will be called (with no arguments).
You can't use `m.addCommand("Filters/Blur", nuke.createNode("Blur"))`,
because `nuke.createNode("Blur")` will be called when the addCommand method is
called (while the menus are being built). In other words, you will be trying to
pass a created node to `m.addCommand()`.
-Nathan
From: Matthew Doll
Sent: Monday, November 17, 2014 1:15 PM
To: Nuke Python discussion
Subject: [Nuke-python] "lambda" or \"xyz\"
In the docs about adding menu items it mentions both:
m.addCommand("Filters/Blur", "nuke.createNode(\"Blur\")" )
or its alternative:
m.addCommand("Filters/Blur", lambda: nuke.createNode("Blur") )
I'm not clear what is the functionality here, why not:
m.addCommand("Filters/Blur", nuke.createNode("Blur"))
I can't find any references on this list or in the docs to what exactly those
backslashes or "lambda:" actually do.
Thanks,
Matt
------------------------------------------------------------------------------
_______________________________________________
Nuke-python mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
_______________________________________________
Nuke-python mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
--------------------------------------------------------------------------------
_______________________________________________
Nuke-python mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
_______________________________________________
Nuke-python mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python