Maya workspaceControl 'uiScript' 未更新为新功能

Maya workspaceControl 'uiScript' does not update to new function

我正在 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

我试过手动关闭 workspaceControl。 我还尝试使用以下代码的各种组合:

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

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

它只会在我更改 'dockName' 时更新。这告诉我 Maya 将 UIScript 存储在内部某处,我已经完成了我的所有偏好,但无法在任何地方找到对它的引用。有谁知道如何解决这个问题,而无需每次我想尝试不同的东西时都不断地重命名扩展坞?

谢谢

我从来没有使用过这个命令,而且我已经有几周没有使用 Maya 了。 请注意,命令标志并不意味着有字符串:

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

你应该可以修改它:

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

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

Window > Settings/Preferences > Preferences > UI Elements

只是为了将来清楚我发现的工作。命令标志是一个字符串,否则不起作用。因此,将其与 DrWeeny 的解决方案相结合:

# 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()")