Hi Kristopher,
why dont you just wrap the functionality that is in the root into a main-method
and call this in the menu:
def main():
p = test_panel()
p.show()
If the name of your py file (module) was" testscript", then you simply call:
testscript.main()
Assuming your python path is set correctly the module should be found an the
main function should be called...
Does this solve your problem?
lars
Von: [email protected]
[mailto:[email protected]] Im Auftrag von Kristopher
Young
Gesendet: Donnerstag, 29. November 2012 19:43
An: Nuke Python discussion
Betreff: Re: [Nuke-python] Pyhon panels and functions
Hi again,
forgive me for bringing this thread up again. I've searched for an answer, but
I just haven't been able to find one. Using the technique Nathan posted above,
everything works perfectly if I run the script in the script editor. But what
about if I wanted to add it to a menu in Nuke. Normally I just wrap a function
around all of my code and in my menu.py I call testscript.testfunction(). But
now the code where I show the panel isn't inside a specific function, it lives
in the "root" of the script. I guess this is basic Python, but I would really
appreciate your help on this. Thanks a lot!
class test_panel(nukescripts.PythonPanel):
def __init__(self):
nukescripts.PythonPanel.__init__(self, "test panel")
self.check = nuke.Boolean_Knob("checkbox", "checkbox")
self.addKnob(self.check)
self.button = nuke.PyScript_Knob("button", "button")
self.addKnob(self.button)
self.button.setValue("print_value()")
p = test_panel()
p.show()
def print_value():
if p.check.value() == True:
print "It's true."
else:
print "It's not true."
2012/11/11 Kristopher Young
<[email protected]<mailto:[email protected]>>
Thanks for that example Nathan. I will try to read up a bit on Python classes.
This is one of my first expreciences with panels so it's a bit hard to grab at
the moment. Thanks a lot for your help.
2012/11/11 Nathan Rusch
<[email protected]<mailto:[email protected]>>
test_panel is your panel class. Since 'check' is defined in __init__, it
doesn't exist until you create an instance of the class. I recommend reading up
a bit on Python classes.
p = test_panel()
p.show()
def print_value():
if p.check.value():
print "It's true"
else:
print "It's not true"
Hope this helps
-Nathan
From: Kristopher Young<mailto:[email protected]>
Sent: Sunday, November 11, 2012 9:52 AM
To: Nuke Python discussion<mailto:[email protected]>
Subject: Re: [Nuke-python] Pyhon panels and functions
Hi Howard, I tried your suggestion but it returns "type object 'test_panel' has
no attribute 'check". Any idea? I tried with test_panel["check"].value() but
that didn't work either.
2012/11/11 Howard Jones
<[email protected]<mailto:[email protected]>>
I'm not the best at this by any stretch but isn't it
def print_value():
if test_panel.check.value() == True:
print "It's true."
else:
print "It's not true."
____________________________________
Howard
On 11 Nov 2012, at 09:28, Kristopher Young
<[email protected]<mailto:[email protected]>> wrote:
> def print_value():
>
> if self.check.value() == True:
> print "It's true."
> else:
> print "It's not true."
> ____________________________________
_______________________________________________
Nuke-python mailing list
[email protected]<mailto:[email protected]>,
http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
________________________________
_______________________________________________
Nuke-python mailing list
[email protected]<mailto:[email protected]>,
http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
_______________________________________________
Nuke-python mailing list
[email protected]<mailto:[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