Maya 2009 TreeViewコントロールでドラッグ時に構文エラーが発生するのはなぜですか?

StackOverflow https://stackoverflow.com/questions/820697

質問

Maya 2009でTreeViewコントロールを使用していますが、ドラッグアンドドロップで構文エラーが発生しています。私のコードは次のとおりです(簡潔にするために簡略化しています):

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"

要素をドラッグアンドドロップすると、コンソールで次のコマンドが実行されます:

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

次のエラーが表示されます:

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

編集:私が抱えていた問題は、ほとんどのイベントコールバックでMEL関数呼び出しを実装しているtreeViewによるものであったことがわかりました。上記のエラーは、MELインタープリターが引数をコマンド名にフィードしようとするためにスローされます。

役に立ちましたか?

解決

http://download.autodesk.com/us/を参照してください。 maya / 2009help / CommandsPython / treeView.html :dragAndDropCommandはSTRINGです。Mayaはそのreprを使用してバインドメソッドを渡します。よくわかりませんが、文字列はバインドされたメソッドではなく、トップレベル(モジュールレベル)の関数を指定すべきだと思います。

他のヒント

Maya 2010の時点では、treeViewウィジェットでは、コールバックの一部に使用するmelプロシージャの文字列名を必要とするように見えますが、他のコールバックには使用しません。たとえば、dragCallbackとdropCallbackは期待どおりに機能しますが、selectCommandなどは機能しません。他の多くのウィジェットは、コールバックのためにpython関数を受け入れます。ドキュメントでは一部のtreeViewコールバックの引数を文字列としてリストしていますが、文字列がMELプロシージャ名である必要があるとは述べられておらず、一貫性がありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top