PyQt4: проверьте, существует окно или нет - PullRequest
3 голосов
/ 21 декабря 2011

Я сделал своего рода инструмент для MAYA.Когда я вызываю класс и создаю экземпляр, мне больше не нужно его вызывать.Вместо этого я должен проверить, существует ли окно или нет.Фактически, когда я нажимаю кнопку для вызова кнопки close() или «X», она не вызывает метод __del()__.Я не могу очистить свои работы.

Итак, я планирую проверить, существует ли экземпляр, и если это так, я не вызываю класс, просто позвоните show().Но я не могу найти путь.

_win = RigControlWindow()
_win.show()

Как класс RigControlWindow может обнаружить, что экземпляр существует?

Ответы [ 2 ]

4 голосов
/ 21 декабря 2011

Сохранить ссылку на экземпляр 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 голос
/ 22 июня 2017

Альтернативой ответу Эхуморо является наличие функции в модуле, подобном этому:

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()
...