在initUI之前终止PyQt应用程序

时间:2015-06-26 19:04:02

标签: python qt pyqt exit

我正在开发一个发送邮件的PyQt应用程序。它从文件中读取身份验证信息。我在调用initUI()之前尝试检查身份验证是否正常,并显示错误消息并退出整个应用程序,如果这样做的话。

这是我的代码片段:

class Mailer(QWidget):
    def __init__(self):
        super().__init__()

        config = configparser.ConfigParser()
        config.read('config.ini')

        self.server = config["SMTP SERVER"]
        self.user = config["USER"]
        self.smtpServer = smtplib.SMTP_SSL(self.server["Host"],self.server["Port"])

        try:
            self.smtpServer.login(self.user["Username"],self.user["Password"])
            self.smtpServer.quit()
        except smtplib.SMTPAuthenticationError:
            QMessageBox.critical(self, "Error de autenticación", """El usuario y/o la contraseña en el archivo config.ini son incorrectos.""", QMessageBox.Ok)
            QCoreApplication.instance().quit()

        self.initUI()

问题是它没有退出应用程序。如果我按QCoreApplication.instance().quit()更改self.close(),我会得到相同的结果。

1 个答案:

答案 0 :(得分:0)

你试过sys.exit(0)吗? (您需要import sys,但您可能已经导入了它,因为它是pyqt sys.exit(app.exec_())所必需的)

如果它不起作用,我相信你的问题来自其他地方。