I need to amend my email and correct some erroneous information…
—— First of all, setting the knob value to a string, like ‘foobar’, *does*
work!
...Not sure what I was doing that made the test not work before, but it does
now…. ~(8^P
—— Secondly, what does *not* work is setting the knob value to the result of a
function. What I am actually trying to do is set the knob’s initial value to
nuke.activeViewer().view(). The result is a string, but when recalling the Nuke
script with a registered panel - the panel does not show. It does not matter if
I set the value beforehand, either. I.e., if I do something like this:
self.current_view = nuke.activeViewer().view()
…then…
self.partStartsWith_knob.setValue(self.current_view)
—— That will work fine when initially creating the tabbed panel - but fails to
show anything when the script is saved and reloaded.
—— So, here’s a better test that shows the problem:
import nuke
import nukescripts
class testpanel( nukescripts.PythonPanel ):
def __init__(self):
# Get the view name and assign it...
self.current_view = nuke.activeViewer().view()
nukescripts.PythonPanel.__init__(self, 'View Selector',
'com.richbobo.testpanel')
self.partStartsWith_knob = nuke.String_Knob('startswith', 'View Name -
Starts With :')
self.addKnob(self.partStartsWith_knob)
# Set the initial view name value to the knob...
self.partStartsWith_knob.setValue(self.current_view)
—— Sorry for the confusion!
Rich
On Nov 7, 2013, at 10:58 AM, Richard Bobo <[email protected]> wrote:
> OK, here's an interesting problem... Well, it's "interesting" in the sense
> that I can't figure out how to solve it!! (8^\
>
> ---- When I add a custom PythonPanel to the Pane menu, create it as a tab,
> save the Nuke script and recall it - the panel does not appear!
>
> ---- The thing that is causing it to *not* appear is assigning an initial
> value to the knob. If I don't assign an initial value, the panel appears in
> the tab, as expected. This happens with more than one type of knob, by the
> way. It seems to be a general problem...
>
> ---- For debugging purposes, I am making a simple PythonPanel and adding a
> String_Knob to it. If I comment out the last .setValue line, the tabbed panel
> saves and restores with the Nuke script without a problem. If I assign a
> default value, it doesn't.
>
> ---- Here's the test class:
> import nuke
> import nukescripts
> class testpanel( nukescripts.PythonPanel ):
> def __init__(self):
> nukescripts.PythonPanel.__init__(self, 'View Selector',
> 'com.richbobo.testpanel')
> self.partStartsWith_knob = nuke.String_Knob('startswith', 'View Name
> - Starts With :')
> self.addKnob(self.partStartsWith_knob)
> self.partStartsWith_knob.setValue('foobar')
>
> ---- Here's what I have in my menu.py:
> import test_panel
> def addtestpanel():
> global testpanel
> testpanel = test_panel.testpanel()
> testpanel.addToPane()
> return testpanel
> nuke.menu('Pane').addCommand( 'testpanel', addtestpanel )
> nukescripts.registerPanel( 'com.richbobo.testpanel', addtestpanel )
>
> --- Note that there are no errors reported when the panel does not appear.
>
> It seems that assigning initial values to the knobs of a registered panels
> somehow interrupts the mechanism that causes the panel to show. How do I make
> sure to insert initial values in the knobs - without causing the registered
> PythonPanel to not show?!?
>
>
> Thanks for any help,
> Rich
>
> Rich Bobo
> Senior VFX Compositor
> Email: [email protected]
> Mobile: 248.840.2665
> Web: http://richbobo.com
_______________________________________________
Nuke-python mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python