2011-12-21 76 views
3

我为MAYA做了一种工具。 一旦我调用这个类并创建一个实例,我就不必再调用它了。 相反,我必须检查窗口是否存在。 实际上,当我按下一个按钮来呼叫close()或“X”按钮时,它不会调用__del()__方法。我无法清理我的作品。PyQt4:检查窗口是否存在

那么,我打算检查一下这个实例是否存在,如果是这样,我就不要调用class,只需拨打show()即可。 但是,我找不到方法。

_win = RigControlWindow() 
_win.show() 

RigControlWindow类如何找到实例存在?

回答

3

保留对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

的替代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()