PyQt4:等待无模式对话框

PyQt4: Wait on modeless dialog

是否有等待非模式对话框关闭的方法?

这是一个示例应用程序:我启动了一些程序,它需要执行一些启动操作并且还需要用户登录。由于用户登录需要一些时间,我希望登录框是无模式的,这样我就可以在后台继续做其他启动工作。但在某些时候,我将无法继续,直到登录过程完成。所以理想情况下,当我到达那一点时,我希望能够调用类似 dialog.wait_until_complete() 的东西,然后让它像模式对话框一样运行,只有在用户 accepts/rejects 对话框后才继续。

连接到对话框的 finished 信号:

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

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

为了防止用户交互,您可以 hide() 主 window 直到登录完成。否则,要更改对话框的模式,您需要执行以下操作:

    self.login.hide()
    self.login.setModal(True)
    self.login.show()