代码之家  ›  专栏  ›  技术社区  ›  Soviut

为什么Maya 2009 TreeView控件在拖动时出现语法错误?

  •  1
  • Soviut  · 技术社区  · 16 年前

    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 // 
    

    编辑:

    2 回复  |  直到 7 年前
        2
  •  0
  •   kb.    16 年前

    从Maya 2010开始,treeView小部件似乎仍然需要一个mel过程的字符串名称才能用于其某些回调,但不需要用于其他回调。例如,dragCallback和dropCallback确实能按预期工作,但selectCommand和其他小部件则不能。许多其他小部件确实接受python函数作为其回调函数。尽管文档将某些treeView回调的参数列为字符串,但并没有说明字符串必须是mel过程名称,这肯定是不一致的。