PyQt4:检查窗口是否存在
我做了一个工具,用于MAYA软件。每次我调用这个工具的类并创建一个实例后,就不需要再调用它了。接下来,我只需要检查这个窗口是否还存在。
实际上,当我按下一个按钮去调用 close()
方法或者点击“X”按钮时,它并不会调用 __del()__
这个方法。所以我无法清理我的工作。
因此,我打算检查这个实例是否还存在,如果存在的话,就不再调用这个类,只需要调用 show()
方法。但是,我找不到实现这个的办法。
_win = RigControlWindow()
_win.show()
那么,RigControlWindow
这个类要怎么检查实例是否存在呢?
2 个回答
2
ekhumoro的回答还有另外一种选择,就是在一个模块里写一个函数,像这样:
def startGui():
if 'myWindows' in globals():
global myWindows
myWindows.show()
else:
global myWindows
myWindows = init_gui.MainWindow(parent=init_gui.MyMainWindow())
myWindows.show()
然后你可以从一个叫做shelf script的脚本中调用startGui,像这样:
if __name__ == '__main__':
startGui()
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()