2011-12-21 8 views
3

私はMAYAのためのツールを作った。 クラスを呼び出してインスタンスを作成したら、もう呼び出す必要はありません。 代わりに、ウィンドウが存在するかどうかをチェックする必要があります。 実際にボタンを押してclose()または「X」ボタンを押すと、__del()__メソッドが呼び出されません。私は自分の作品をクリアすることはできません。PyQt4:ウィンドウが存在するかどうかをチェック

したがって、インスタンスが存在するかどうかを確認する予定です。インスタンスである場合は、クラスを呼び出さずに、show()を呼び出します。 しかし、私は方法を見つけることができません。

_win = RigControlWindow() 
_win.show() 

どうRigControlWindowクラスはインスタンスが存在している見つけることができますか?

答えて

3

RigControlWindowインスタンスへの参照を、メインウィンドウのプライベート属性として保持します。 、

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の答えの代わりに、このようなモジュールで機能を持つことである:

また
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() 

は、プロパティを使用することができ

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() 
関連する問題