Just remember that everything in tcl is basically a string (I guess you could
argue about that, but it's a helpful notion I found).
White spaces delimit arguments and square brackets indicate a nested tcl
command. double quotes are used to explicitly define a string allowing
substitution, while curly braces won't allow substitution.
so:
puts hello
works as well as:
puts "hello"
or
puts {hello}
this will throw an error as it interprets "world" as a second argument to the
puts command (which is expected to be a IO channel:
puts hello world
so out come the quotes:
puts "hello world"
or braces:
puts {hello world}
to see the difference between quotes and braces:
puts "the current frame is [frame]"
where [frame] is a nested tcl command, and because it's inside of double
quotes, it will be evaluated:
--> the current frame is 1
with braces the nested command is not evaluated:
puts {the current frame is [frame]}
--> the current frame is [frame]
so when you put python syntax into a label, you essentially run a tcl command
called "python" followed by n argument which is the python syntax. And if that
syntax contains stuff like square brackets, tcl might try and evaluate it as a
nested command. And that's where braces come to the rescue to make sure tcl
doesn't try to mess with the python syntax.
On Mar 9, 2011, at 7:58 AM, Nathan Rusch wrote:
> It’s good practice to do it all the time, just to help make things clearer
> and avoid the potential for pesky errors.
>
> -Nathan
>
>
> From: Michael Havart
> Sent: Tuesday, March 08, 2011 10:24 AM
> To: Nuke Python discussion
> Subject: Re: [Nuke-python] knob syntax
>
> Ok that's clever, thanks
> When exactly you need to put the curly braces ? maybe it can improve my
> autolabel callbacks...
>
> thanks,
> Michael
>
> 2011/3/8 Ean Carr <[email protected]>
> That's because you're confusing the tcl interpreter. Try curly braces.
>
> [python {nuke.thisNode()["size"].value()}]
>
> -E
>
>
> On Tue, Mar 8, 2011 at 2:45 PM, Michael Havart <[email protected]>
> wrote:
> and also, in autolabel or expressions this will not work:
>
> [python nuke.thisNode()["size"].getValue()]
>
> but this will work:
>
> [python nuke.thisNode().knob("size").getValue()]
>
>
>
>
>
> 2011/3/8 Alexander Jones <[email protected]>
>
>
>
> On 8 March 2011 06:19, Ben Dickson <[email protected]> wrote:
> node['blah'].value()
>
> ..is less typing, so I use that over the functionally identical
> node.knob("blah").value()
>
> They're not identical -- ["blah"] will raise a KeyError for a missing knob,
> whereas knob("blah") will return None. Subtle!
>
>
> I use node.knobs() occasionally to iterate over all knobs (or use
> node.knobs().keys() )
>
> Incidentally I use [''] over [""], because the first can be typed
> without shift (on UK/Australian keyboards anyway) - same with ("") which
> can be typed with shift held. Efficiency!...
>
> John RA Benson wrote:
> > Hey there -
> >
> > Basic question:
> >
> > just curious - if find myself flipping between using syntax like:
> >
> > node.knob('myknob').value()
> > vs:
> > node['myknob'].value()
> >
> > Is there any 'best practices' or preferred way to write that? Sort of like,
> > do you always use '"' or "'" for quotes...
> >
> > Cheers
> > JRAB_______________________________________________
> > Nuke-python mailing list
> > [email protected]
> > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
> >
>
> --
> ben dickson
> 2D TD | [email protected]
> rising sun pictures | www.rsp.com.au
>
> _______________________________________________
> Nuke-python mailing list
> [email protected]
> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>
>
>
> --
> Alexander Jones
> Double Negative R&D
> www.dneg.com
>
>
> _______________________________________________
> Nuke-python mailing list
> [email protected]
> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>
>
>
>
> --
> Michael Havart | DMP-ENV | MPC-London
> images: cghub.com | blogspot.com
> cv: linkedin profile | imdb
>
>
> _______________________________________________
> Nuke-python mailing list
> [email protected]
> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>
>
>
> _______________________________________________
> Nuke-python mailing list
> [email protected]
> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>
>
>
>
>
> _______________________________________________
> Nuke-python mailing list
> [email protected]
> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
> _______________________________________________
> Nuke-python mailing list
> [email protected]
> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
_______________________________________________
Nuke-python mailing list
[email protected]
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python