Maya workspaceControl“uiScript”不会更新为新函数

2024-10-01 02:28:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在maya 2018.6中创建一个新的workspaceControl。你知道吗

当我将uiScript标志更改为指向新函数并重新启动workspaceControl时,它仍在调用旧函数。以下是我的代码的简单版本:

dockName = 'myNewDock'
def test1():
    print 'test 1'
def test2():
    print 'test 2'    
cmds.workspaceControl(dockName, retain=False, floating=True, l='My Dock Test', uiScript="test1()")

上面的工作很好。但是,当我改变时:

uiScript="test1()"

未来:

uiScript="test2()"

它还是打印出来的

test 1

我已尝试手动关闭工作区控件。 我还尝试使用以下代码的各种组合:

cmds.deleteUI(dockName)
cmds.workspaceControl(dockName, edit=True, close=True)

即使关闭Maya并重新启动它也不能解决问题,它仍然调用test1()

它只会更新,如果我改变'dockName'。这告诉我Maya正在内部某个地方存储UIScript,我已经查看了所有的首选项,但在任何地方都找不到对它的引用。有没有人知道如何解决这个问题,而不是每次我想尝试不同的东西时不断地重命名码头?你知道吗

谢谢


Tags: 函数代码testtruedef地方printtest1
2条回答

我从未使用过这个命令,而且我已经有几个星期没有maya了。 请注意,命令标志不应包含字符串:

mywcctrl = cmds.workspaceControl(dockName, retain=False, floating=True, l='My Dock Test', uiScript=test1)

您应该能够通过以下方式对其进行修改:

cmds.workspaceControl(mywcctrl , edit = True, uiScript=test2)

否则,在maya pref中,它会使用layout pref、window和其他一些内容保存场景文件,因此如果关闭maya并重新打开,可能会导致问题:

Window > Settings/Preferences > Preferences > UI Elements

enter image description here

只是为了让我的发现更清楚。命令标志是一个字符串,否则不起作用。所以结合Weeny博士的解决方案:

# create UI First time round    
dockName = 'myNewDock'
def test1():
    print 'test 1'
def test2():
    print 'test 2'    
cmds.workspaceControl(dockName, retain=False, floating=True, l='My Dock Test', uiScript="test1()")

# Delete UI
cmds.deleteUI(dockName)
cmds.workspaceControl(dockName, edit=True, close=True)

# edit the command flag
cmds.workspaceControl(dockName, e=True, uiScript='test2()')

# re launch UI pointing to new function
cmds.workspaceControl(dockName, retain=False, floating=True, l='My Dock Test', uiScript="test2()")

相关问题 更多 >