1

これは私の問題です:

選択したノードごとに CheckBox を作成したいと考えています。私は正しい名前で各ノードのチェックボックスを作成することができましたが、問題は、それらがチェックボックスで選択され、結果を出力する場所が、選択された最初のノードまたはブール値の結果 (True または False) のみを返すことです。チェックボックスが選択されています。答えが見つかりません。

すべてに感謝します!

import nuke

nodeNames = [n.name() for n in nuke.allNodes('Write')]

names = []
for s in nuke.allNodes('Write'):
    n = s['name'].value()
    names.append(n)
#print names
#len(names)

writeNodes = ( ", ".join( str(e) for e in names ) )


p = nuke.Panel ('TEST')

for items in names:
    de = p.addBooleanCheckBox(items,'True')    

p.show()
4

1 に答える 1

2

パネルから情報を返したい場合は、PythonPanel の独自のサブクラスを作成する必要があります。このようなもの:

class WritesPanel( nukescripts.PythonPanel ):
    def __init__( self , nodeNames):
        nukescripts.PythonPanel.__init__( self, "Write Nodes", "unique.panel.id" )

        self.nodeNames=nodeNames

        for nodeName in nodeNames:
            self.k = nuke.Boolean_Knob(nodeName, nodeName)

            self.addKnob( self.k )

    # The next function shows the dialog as a modal dialog. Doing this 
    # automatically adds the 'OK' and 'Cancel' buttons to the dialog.

    def showModalDialog( self ):
        result = nukescripts.PythonPanel.showModalDialog( self )
        if result:
            results={}
            for nodeName in self.nodeNames:
                results[nodeName]=self.knobs()[nodeName].value()
            return results
        else:
            return None

# The following function calls WritesPanel

def launchWritesPanel(nodeNames):
    return WritesPanel(nodeNames).showModalDialog()

launchWritesPanelnodeNames リストで呼び出すと{nodeName:True/False}、ユーザーが [OK] を押したNone場合、またはユーザーがキャンセルした場合、パネルは辞書を返します。

于 2018-03-22T15:18:35.140 に答える