2011-12-21 91 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()