PyQt4:检查窗口是否存在

时间:2011-12-21 02:47:31

标签: python pyqt pyqt4 instance

我为MAYA制作了一种工具。 一旦我打电话给班级并制作一个实例,我就不必再打电话了。 相反,我必须检查窗口是否存在。 实际上,当我按下按钮来调用close()或“X”按钮时,它不会调用__del()__方法。我无法清理我的作品。

所以,我打算检查实例是否存在,如果是,我不调用类,只需调用show()。 但是,我找不到方法。

_win = RigControlWindow()
_win.show()

RigControlWindow类如何找到实例?

2 个答案:

答案 0 :(得分:4)

RigControlWindow实例的引用保留为主窗口的私有属性。

class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self._rcwin = None

    def showRigControlWindow(self):
        if self._rcwin is None:
            self._rcwin = RigControlWindow()
        self._rcwin.show()

或者,您可以使用属性:

class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self._rcwin = None

    @property    
    def rcwin(self):
        if self._rcwin is None:
            self._rcwin = RigControlWindow()
        return self._rcwin

    def showRigControlWindow(self):
        self.rcwin.show()

答案 1 :(得分:1)

ekhumoro答案的替代方案是在这样的模块中使用函数:

def startGui():
    if 'myWindows' in globals():
        global myWindows
        myWindows.show()
    else:
        global myWindows
        myWindows = init_gui.MainWindow(parent=init_gui.MyMainWindow())
        myWindows.show()

然后从架子脚本调用startGui,如下所示:

if __name__ == '__main__':
    startGui()