PyQt4: ждать немодального диалога

Есть ли способ дождаться закрытия немодального диалога?

Вот пример приложения: я запускаю некоторую программу, которая должна выполнять некоторые действия при запуске, а также требует, чтобы пользователь вошел в систему. Поскольку для входа пользователя в систему требуется некоторое время, я бы хотел, чтобы поле входа было немодальным, чтобы я мог продолжать выполнять свои другие задачи при запуске в фоновом режиме. Но в какой-то момент я не смогу продолжить, пока процесс входа в систему не будет завершен. Поэтому в идеале я хотел бы иметь возможность вызвать что-то вроде dialog.wait_until_complete(), когда я дойду до этой точки, и затем он будет действовать как модальный диалог, продолжающийся только после того, как пользователь примет / отклонит диалог.


person ehudson    schedule 19.06.2015    source источник


Ответы (1)


Подключитесь к сигналу готово диалогового окна:

    self.login.finished.connect(self.handleLoginFinished)
    ...

def handleLoginFinished(self, result):
    if result == QDialog.Accepted:
        # register login...
    else:
        # deal with cancelled login...

Чтобы предотвратить взаимодействие с пользователем, вы можете просто hide() открывать главное окно до завершения входа в систему. В противном случае, чтобы изменить модальность диалога, вам нужно сделать что-то вроде:

    self.login.hide()
    self.login.setModal(True)
    self.login.show()
person ekhumoro    schedule 19.06.2015