You can get knobs in order by using the nuke.Node.knob(n) and the number of knobs via nuke.Node.numKnobs

Meaning you can iterate over the knobs, start removing knobs when you get to the target tab, and stop at the next Tab_Knob:


def remove_user_knobs(node):
    in_user_tab = False
    to_remove = []
    for n in range(node.numKnobs()):
        cur_knob = node.knob(n)
        is_tab = isinstance(cur_knob, nuke.Tab_Knob)

        # Track is-in-tab state
        if is_tab and cur_knob.name() == "User": # Tab name to remove
            in_user_tab = True
        elif is_tab and in_user_tab:
            in_user_tab = False

        # Collect up knobs to remove later
        if in_user_tab:
            to_remove.append(cur_knob)

    # Remove in reverse order so tab is empty before removing Tab_Knob
    for k in reversed(to_remove):
        node.removeKnob(k)

    # Select first tab
    node.knob(0).setFlag(0)


remove_user_knobs(nuke.selectedNode())

On 23/01/16 04:32, Daniel Stein wrote:
I think Igor's suggestion would be the easiest workaround to implement
moving forward. If you haven't already stored that information another
option is get the output of node.writeKnobs with the
nuke.WRITE_USER_KNOB_DEFS flag and parse it to find the tab knobs and
the knobs nested inside them.

Super dirty and would only work for user knobs but it would do the trick.

On 22 January 2016 at 10:53, Igor Majdandzic <[email protected]
<mailto:[email protected]>> wrote:

    nope, thats what he meant. He has to kill all the knobs on the tab
    before he can remove the tab itself


    Am 22.01.2016 um 17:46 schrieb Fredrik Averpil:
    Not in front of a machine at the moment but...

    Does this work?
    nuke.removeKnob( myknob )

    // Fredrik


    On Fri, Jan 22, 2016 at 12:20 PM Igor Majdandzic
    <[email protected] <mailto:[email protected]>>
    wrote:

        Hey Abraham,
        I dont know if there is a nice fast fancy way of doing this.
        But you could store a directory in a hidden knob, key could be
        the tab and knobs are the values.
        Work around I know, but it should do the trick.

        Cheers

            Igor


        Am 21.01.2016 um 12:59 schrieb Schneider, Abraham:
        Hi there!

        I have some user knobs in my root node, that I want to get
        rid of. It's a 'tab_knob' at the root level (let's call it
        'testtab'), that contains several different knobs (strings,
        etc.). Now I want to delete all the knobs inside this tab
        knob and the tab knob itself.

        I can get to the tab knob via "myknob =
        nuke.Root().knob('testtab')" and I can remove knobs like
        this: "nuke.Root().removeKnob(myknob)". This should work, if
        the tab is empty. But because the tab contains other knobs,
        it won't be deleted, as the removeKnob doesn't delete knobs
        recursively.

        So how would I find all the knobs of nuke.Root() that belong
        to my tab knob, so that I can delete them first before
        deleting the tab knob itself?

        Or is there an even better way to remove the tab and all the
        related knobs quickly?

        Thanks, Abraham



        *Abraham Schneider*
        Head of VFX pipeline / VFX Supervisor



        ARRI Media GmbH
        Türkenstr. 89, 80799 München
        Phone +49 89 3809-1096 <tel:%2B49%2089%203809-1096>

        EMail [email protected] <mailto:[email protected]>
        www.arri.de/arrimedia <http://www.arri.de/arrimedia>

        <http://www.facebook.com/arrimedia> Click here
        <http://www.facebook.com/arrimedia> to visit us on Facebook!



        _______________________________________________
        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://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

    --

    CHIMNEY

    *Igor Majdandzic*
    Compositing Supervisor

    __CHIMNEY Deutschland GmbH & Co. KG__
    __Hanauer Landstraße 196__
    60314 Frankfurt am Main
    __Direct: +49 69 989 56 431 <tel:%2B49%2069%20989%2056%20431> -*NEW
    PHONE NUMBER*- __
    __Fax: +49__ 69 904 36 68 29
    __Mobile: +49 176 321 375 72 <tel:%2B49%20176%20321%20375%2072>__
    __Berlin, Frankfurt/Main, Stockholm, Malmö, ____Warsaw, Copenhagen,
    Sydney, Singapore__

    www.chimneygroup.com <http://www.chimneygroup.com/>


    __AG Charlottenburg HRA 44507 B; Pers. haft. Gesellschafter: Chimney
    Deutschland GmbH__
    __AG Charlottenburg HRB 130013 B; Geschäftsführer: ____Ralf
    Drechsler, __Michal Kalinowski,Carl Henric Larsson


    _______________________________________________
    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


--
ben dickson
2D TD | [email protected]
rising sun pictures | www.rsp.com.au
_______________________________________________
Nuke-python mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python

Reply via email to