Pergunta

Eu estou usando o controle TreeView no Maya 2009, mas eu estou recebendo um erro de sintaxe em arrastar e soltar. Meu código é a seguinte (simplificado por brevidade):

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"

Quando eu arrastar e soltar e elemento I se o seguinte comando é executado no console:

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

E obter o seguinte erro:

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

EDIT: Acontece que os problemas que eu estava tendo deveram-se à TreeView ainda implementar chamadas de função MEL sobre a maioria de suas chamadas de retorno de eventos. Os erros acima estão sendo jogados pelo intérprete MEL enquanto tenta argumentos de alimentação para um nome de comando.

Foi útil?

Solução

http://download.autodesk.com/us/ maya / 2009help / CommandsPython / treeView.html : dragAndDropCommand é uma string - você está passando um método vinculado, Maya está usando sua repr. Eu não tenho certeza, mas eu suspeito que cadeia deve nomear um alto nível de função (módulo-nível), não é um método vinculado.

Outras dicas

Como de Maya 2010, o TreeView Widget parece ainda requerem um nome de cadeia de um procedimento de mel para ser usado para alguns de seus retornos de chamada, mas não para outros. Por exemplo, o dragCallback e dropCallback fazer um trabalho como esperado, mas o SelectCommand e outros não. Muitos outros widgets fazer aceitar uma função python para seus retornos de chamada. Apesar de listar os docs os argumentos para algumas chamadas de retorno TreeView como cordas, não é indicado que a cadeia deve ser um nome procedimento de mel, e certamente é inconsistente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top