Frage

Ich bin mit dem TreeView-Steuerelement in Maya 2009, aber ich bin einen Syntaxfehler auf Drag & Drop zu bekommen. Mein Code ist wie folgt (vereinfacht der Kürze halber):

class View(event.Dispatcher):
    def __init__(self):
        self.window = cmds.window()
        tree_view = cmds.treeView(
            numberOfButtons=1,
            allowReparenting=True,
            dragAndDropCommand=self.tree_view_onDrag
        )
        cmds.showWindow(self.window)

    def tree_view_onDrag(self, dropped_items, old_parents, old_indexes, new_parent, new_indexes, item_before, item_after, *args):
        print "worked"

Wenn ich per Drag & Drop und Element, das ich den folgenden Befehl erhalten wird, in der Konsole ausgeführt:

<bound method View.tree_view_onDrag of  {"layer 3"} {""} {1} "layer 1"  {0} "" "layer 2";

Und Sie erhalten den folgenden Fehler:

// Error: <bound method View.tree_view_onDrag of  {"layer 3"} {""} {1} "layer 1"  {0}€ // 
// Error: Line 1.1: Syntax error // 

EDIT: Es stellt sich heraus, dass die Fragen, die ich mit war aufgrund der TreeView waren Umsetzung noch MEL-Funktion auf den meisten seiner Ereignisrückrufe nennt. Die Fehler, die oben vom MEL-Interpreter geworfen werden, wie es versucht, Argumente zu einem Befehlsnamen zu ernähren.

War es hilfreich?

Lösung

Siehe http://download.autodesk.com/us/ maya / 2009help / CommandsPython / treeView.html : dragAndDropCommand ist ein STRING - Sie eine gebundene Methode vorbei sind, Maya seine repr verwenden. Ich bin nicht sicher, aber ich vermute, dass der String eine Top-Level (Modulebene) Funktion nennen sollte, nicht eine gebundene Methode.

Andere Tipps

Wie von Maya 2010 der TreeView-Widget scheint immer noch ein String Name eines mel Verfahren erfordert für einige seine Rückrufe verwendet werden, aber nicht für andere. Zum Beispiel arbeiten die dragCallback und dropCallback wie erwartet, aber die Select und andere nicht. Viele andere Widgets tun, um eine Python-Funktion für ihre Rückrufe akzeptieren. Auch wenn die Dokumente, die Argumente für einige TreeView Rückrufe als Strings Liste wird nicht angegeben, dass die Zeichenfolge ein mel Prozedurname sein muss, und es ist sicherlich nicht konsistent.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top