Tengo tres Python(3.4.3) secuencias de comandos. Uno de ellos es para el control de la .interfaz de usuario de los archivos generados por PyQt5. Cuando ejecuto el programa con interfaz acepta todos los datos y todo y cuando yo pulse el botón OK en un InputDialog la ventana se cierra y la consola muestra.

Process finished with exit code 1

Al ejecutar el mismo código en Python IDLE, se muestra:

<<<<<<RESTART>>>>>>

Este nunca tuvo lugar cuando he utilizado este mismo Python(3.4.3 o 2.7) código en Visual Studio. ¿Cuál podría ser la razón?

Aquí es el código del archivo de python control de la .archivo ui.

import sys
from PyQt5 import QtCore, QtGui, uic, QtWidgets
from Email import encrypt_email
from Email import decrypt_email
from Email import newuser
qtCreatorFile = "rsegui.ui" # Enter file here.
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)
class MyApp(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
QtWidgets.QMainWindow.__init__(self)
Ui_MainWindow.__init__(self)
self.setupUi(self)
user, ok = QtWidgets.QInputDialog.getText(self, 'New User', 
'Are you a new user?')
user=str(user)
if user in "YESYesyesYy":
email, ok = QtWidgets.QInputDialog.getText(self, 'New User', 
'Enter Your Email ID:')
email1=str(email)
self.sender.setText(email)
newuser(email1)
self.encrypt_and_send.clicked.connect(self.EncryptEmail)
self.decrypt.clicked.connect(self.DecryptEmail)
self.clear.clicked.connect(self.ClearEncrypt)
self.clear_2.clicked.connect(self.ClearDecrypt)
self.sender.setPlaceholderText("Your Email ID")
self.receiver.setPlaceholderText("Receivers, Separate them by ';'")
self.subject.setPlaceholderText("Enter Subject")
self.message.setPlaceholderText("Enter Message")
self.sender_2.setPlaceholderText("Your Email ID")
self.message_2.setPlaceholderText("Encrypted Text")
def EncryptEmail(self):
sender = str(self.sender.text())
receiver = str(self.receiver.text())
receivers = receiver.split(';')
subject = str(self.subject.text())
message = str(self.message.text())
password, ok = QtWidgets.QInputDialog.getText(self, 'Password', 
'Enter your password:',QtWidgets.QLineEdit.Password)
encrypt_email(sender,receivers,subject,message,password)
def DecryptEmail(self):
email = str(self.sender_2.text())
message = str(self.message_2.text())
self.decrypted.setText(decrypt_email(email,message))
def ClearDecrypt(self):
self.sender_2.clear()
self.message_2.clear()
def ClearEncrypt(self):
self.sender.clear()
self.message.clear()
self.receiver.clear()
self.subject.clear()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = MyApp()
window.show()
sys.exit(app.exec_())
  • Muy buena pregunta. Dado que se trata de código, es posible que, creo, ser una buena idea para ofrecer un poco, ¿no crees? Además, la traza sería increíblemente útil también!
  • He actualizado a la pregunta con el código. No hay trazas de que se imprimió a la consola.
  • alguna idea de por qué está sucediendo esto?
  • Bueno, está saliendo con cualquier código de retorno app.exec_() envía de vuelta (en su caso, 1), por lo que sería traza a partir de allí. A menos que usted puede enviar una rastreabilidad, no tengo ni idea tampoco.
  • Si usted quita todo lo relacionado con el Correo electrónico del módulo, ¿todavía la salida como esta? También, usted puede publicar el .interfaz de usuario del archivo?
InformationsquelleAutor daipayan | 2015-12-18

1 Comentario

  1. 18

    He tratado con el mismo problema, y la respuesta es doble:

    1. La razón por la que se estrellan podría ser cualquier número de cosas. Es probablemente un error de programación, llamar a una función que no existe, pasando de un widget en lugar de un diseño, etc. Pero ya que usted no está obteniendo un resultado útil no sabe dónde buscar el culpable. Esto es causado por:
    2. PyQT plantea y de las capturas de las excepciones, pero no pasa a lo largo de ellos. En su lugar sólo sale con un estado de 1 a mostrar una excepción fue capturado.

    Para detectar las excepciones, usted necesita para sobrescribir el sys controlador de excepción:

    # Back up the reference to the exceptionhook
    sys._excepthook = sys.excepthook
    def my_exception_hook(exctype, value, traceback):
    # Print the error and traceback
    print(exctype, value, traceback)
    # Call the normal Exception hook after
    sys._excepthook(exctype, value, traceback)
    sys.exit(1)
    # Set the exception hook to our wrapping function
    sys.excepthook = my_exception_hook

    A continuación, en el código de ejecución, se envuelve en un try/catch.

    try:
    sys.exit(app.exec_())
    except:
    print("Exiting")
    • ¿Cuál es el propósito de la envoltura de la aplicación.exec_ en un try-excepto el bloque?
    • No estoy realmente seguro si es necesario, pero es como mi aplicación terminó. Probar sin, podría no ser necesario.

Dejar respuesta

Please enter your comment!
Please enter your name here