Maya UI 重新运行脚本后未停靠

Maya UI not docking after rerunning script

我为 Autodesk Maya 2015 制作了一个 UI window。每次我 运行 Maya 脚本编辑器中的脚本,它工作正常, UI 得到启动并正确停靠在主 Maya window 上。

但是,在关闭 UI window 并重新运行 脚本后,window 不再停靠。它卡在主屏幕上,我必须关闭整个软件。在我第一次关闭它之后,UI 似乎再也找不到主 Maya Window。我不确定如何解决这个问题。谁能给我一些解决这个问题的建议?

这是我的代码:

def getMayaWindow():
    ptr = apiUI.MQtUtil.mainWindow()
    if ptr is not None:
        return shiboken.wrapInstance(long(ptr), QtGui.QMainWindow)

class pipeWindow(formClass,baseClass):
    def __init__(self, parent=getMayaWindow()):
        super(pipeWindow,self).__init__(parent) 

        self.setupUi(self)
        self.setObjectName('pipe_window')

        try:
            cmds.deleteUI('dockPane')
        except:
            pass                
        self.pane = cmds.paneLayout('dockPane', cn='single')

        if 'pipeDock' not in cmds.lsUI(ctl=1) :
            cmds.dockControl('pipeDock', con=self.pane, area='right', 
                              allowedArea = ['right','left'], label = 
                             "ANMD_Pipeline", w=365)            
        else:
            pass
        cmds.control( 'pipe_window', e=True, p=self.pane)

经过多次尝试,我终于解决了这个问题。我用过

if cmds.dockControl('pipeDock', q=1, ex=1):
    cmds.deleteUI('pipeDock')

然后我在 closeEvent 函数中有一个 super(className, self).closeEvent(event)。这对我有用。这对我有用。以前我的 closeEvent 函数中有 cmds.deleteUI 不起作用,我怀疑这是因为我没有关闭事件本身,所以 UI 只是在我按下十字时隐藏自己按钮而不是删除它。