2009-05-04 15 views
1

Maya 2009でTreeViewコントロールを使用していますが、ドラッグアンドドロップで構文エラーが発生します。私はドラッグすると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 // 

はEDIT:それは私が持っていた問題がまだMEL機能は、私の最も上の呼び出しを実装するため、ツリービューにあったことが判明しますイベントコールバック。上記のエラーは、MELインタプリタがコマンド名に引数を渡そうとするときにスローされます。

答えて

1

http://download.autodesk.com/us/maya/2009help/CommandsPython/treeView.htmlを参照してください。dragAndDropCommandはSTRINGです。バインドされたメソッドを渡しています.Myaはそのreprを使用しています。私は確信していませんが、文字列はバインドされたメソッドではなく、トップレベル(モジュールレベル)の関数である必要があります。

+0

Aha!いいキャッチ!面白いことは私がこれについて考える前にこれが起こったことです。しかし、エラーはあまりにもあいまいで、タイプを確認することは決して考えられません。 – Soviut

0

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

関連する問題