2009-05-04 4 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 // 

는 편집 : 내가 가지고 있던 문제가 여전히 MEL 기능이 나는 대부분의 통화를 구현 인해 트 리뷰에 있다고 밝혀 이벤트 콜백. MEL 인터프리터가 명령 이름에 인수를 제공하려고 시도 할 때 위의 오류가 발생합니다.

답변

1

http://download.autodesk.com/us/maya/2009help/CommandsPython/treeView.html을 참조하십시오. dragAndDropCommand는 STRING입니다. 바인딩 된 메서드를 전달하고, Maya는 repr을 사용합니다. 확실하지는 않지만 문자열은 바인딩 된 메서드가 아닌 최상위 (모듈 수준) 함수의 이름이어야한다고 생각합니다.

+0

아하! 잘 잡으세요! 재밌는 것은 내가 전에 생각한 것보다 앞서 일어난 일이다. 그러나 오류는 너무 모호하여 유형을 확인하지 않는다고 생각합니다. – Soviut

0

Maya 2010에서 treeView 위젯은 콜백의 일부에 콜 프로 시저의 문자열 이름이 필요하지만 나머지는 그렇지 않습니다. 예를 들어, dragCallback 및 dropCallback은 예상대로 작동하지만 selectCommand 등은 작동하지 않습니다. 다른 많은 위젯들은 콜백을 위해 파이썬 함수를 허용합니다. docs는 일부 treeView 콜백에 대한 인수를 문자열로 나열하지만 문자열은 mel 프로 시저 이름이어야하며 확실하지 않습니다.