Assuming all you need to do is show the panel, just bind the whole call to your
menu item at once:
menu.addCommand(‘Show the Panel’, ‘testscript.test_panel().show()’)
-Nathan
From: Kristopher Young
Sent: Thursday, November 29, 2012 10:43 AM
To: Nuke Python discussion
Subject: 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]>
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]>
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
Sent: Sunday, November 11, 2012 9:52 AM
To: Nuke Python discussion
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]>
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]>
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], 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
_______________________________________________
Nuke-python mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python