Maya 2018.1 python workspaceControl不记得状态

时间:2017-10-19 00:14:59

标签: python maya

我试图在Maya 2018.1中使用workspaceControl并且一直在撞墙而不记得它的最后位置。我可以用手找出原因。

将其作为BBTest.py:

放在脚本文件夹中
# BBTest.py
import pymel.core as pm

WorkspaceName = 'WorkspaceWinBoo'

class BBTest(object):
    def StartUI(self):
        if pm.workspaceControl( WorkspaceName, query=True, exists=True) is False:
            pm.workspaceControl( WorkspaceName, uiScript = 'from BBTest import curUI\ncurUI.buildUI()', closeCommand='from BBTest import curUI\ncurUI.CloseUI()')
        else:
            pm.workspaceControl( WorkspaceName, edit=True, restore=True)

    def CloseUI(self):
        if pm.workspaceControl( WorkspaceName, query=True, exists=True):
            pm.workspaceControl( WorkspaceName, edit=True, close=True )


    def buildUI(self):
        WinLayout = pm.columnLayout( adjustableColumn=True )
        pm.button( label='Do Nothing' )
        pm.button( label='Close', command=pm.Callback(self.CloseUI) )

curUI = BBTest()

并在脚本编辑器中使用它生成/恢复它或作为python架子按钮:

import BBTest
BBTest.curUI.StartUI()

这将生成一个可停靠的小窗口。如果你将它移动并停靠它然后关闭它(通过任何方式),它就不会记住停靠的位置。它确实记得大小的变化。

如果您停靠它并退出Maya(使用"自动保存工作区"在当前工作区启用),Maya将启动并显示停靠的对话框,但如果您因任何原因关闭它,它将重新生成再次作为浮动窗口。

如何让它记住它的停靠状态?

1 个答案:

答案 0 :(得分:0)

通过更正式的测试,我发现使用" closeCommand"阻止workspaceControl记住状态。

如果有人知道我可以在我自己的关闭程序中调用什么来恢复该功能,我很想知道。

还有其他问题,但这取决于Autodesk的实施,除了文件错误之外,我无法做到这一点。