2009-09-12 18 views
17

¿Hay alguna manera de indicarle al usuario que salga del programa guión escrito en Python?Preguntar al salir en la aplicación PyQt

Algo así como "¿Seguro que quieres salir del programa?"

Estoy usando PyQt.

+0

Mire la sección "Cuadro de mensaje" de [esta parte del tutorial de PyQt4] (http://zetcode.com/tutorials/pyqt4/firstprograms/). * (respuesta de [las3rjock] (http://stackoverflow.com/users/94732/las3rjock)) * –

+0

Mire la sección "Cuadro de mensaje" de [esta parte del tutorial de PyQt4] (http://zetcode.com/tutoriales/pyqt4/firstprograms /). – las3rjock

Respuesta

45

Sí. Debe anular el comportamiento de cierre predeterminado del QWidget que representa su aplicación para que no acepte el evento de inmediato. La estructura básica que queremos es algo como esto:

def closeEvent(self, event): 

    quit_msg = "Are you sure you want to exit the program?" 
    reply = QtGui.QMessageBox.question(self, 'Message', 
        quit_msg, QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) 

    if reply == QtGui.QMessageBox.Yes: 
     event.accept() 
    else: 
     event.ignore() 

la PyQt tutorial mencionado por las3rjock tiene una buena discusión de este. También consulte los enlaces del PyQt page en Python.org, en particular el official reference, para obtener más información sobre eventos y cómo manejarlos.

+0

¡Oh, muchas gracias! –

+2

¿Cómo establecer "sí" y "no" para que esté en algún otro idioma? Si mi mensaje es, por ejemplo, en alemán, quiero "ja" y "nicht" en lugar de "sí" y "no". – Aleksandar

+0

trabajó para mí de forma inmediata (¡sin ninguna modificación necesaria)! –

Cuestiones relacionadas