为什么Maya 2009 TreeView控件在拖动时会出现语法错误?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么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 //
编辑:事实证明,我遇到的问题是由于treeView仍在大多数事件回调中实现MEL函数调用。 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过程名称,并且它肯定是不一致的。
以上是关于为什么Maya 2009 TreeView控件在拖动时会出现语法错误?的主要内容,如果未能解决你的问题,请参考以下文章