2015-06-26 29 views
0

我正在開發一個發送郵件的PyQt應用程序。它從文件讀取認證信息。我試圖在調用initUI()之前檢查身份驗證是否正常,並顯示錯誤消息並在完成時退出整個應用程序。在initUI之前終止PyQt應用程序

這是我的代碼片段:

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

的問題是,它不會退出應用程序。如果我通過self.close()更改QCoreApplication.instance().quit(),我會得到相同的結果。

+0

當然'self.smtpServer.quit()'應該進入'except'塊嗎? – ekhumoro

+0

的確如此,我認爲SMTP Initializator並沒有啓動連接,而是它的'login()'函數。謝謝。 – lembon

回答

0

你試過sys.exit(0)嗎? (您需要import sys這一點,但已經因爲它需要PyQt的sys.exit(app.exec_())你可能進口的話)

如果它不工作,我相信你的問題來自別的地方。

+0

非常感謝。我不知道它是否是最乾淨的方法,但它的工作原理! – lembon

相關問題