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 <nathan_ru...@hotmail.com> 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 <mattd...@gmail.com> > *Sent:* Monday, November 17, 2014 1:15 PM > *To:* Nuke Python discussion <nuke-python@support.thefoundry.co.uk> > *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 > 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 > >
_______________________________________________ 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