Saltar al contenido

PySide / PyQt detecta si el usuario intenta cerrar la ventana

Solución:

Anular el closeEvent método de QWidget en tu ventana principal.

Por ejemplo:

class MainWindow(QWidget): # or QMainWindow
    ...

    def closeEvent(self, event):
        # do stuff
        if can_exit:
            event.accept() # let the window close
        else:
            event.ignore()

Otra posibilidad es utilizar el QApplication‘s aboutToQuit señal como esta:

app = QApplication(sys.argv)
app.aboutToQuit.connect(myExitHandler) # myExitHandler is a callable

Si solo tiene una ventana (es decir, la última ventana) que desea detectar, puede usar el setQuitOnLastWindowClosed función estática y la lastWindowClosed señal.

from PySide2 import QtGui
import sys


def keep_alive():
    print("ah..ah..ah..ah...staying alive...staying alive")
    window.setVisibility(QtGui.QWindow.Minimized)


if __name__ == '__main__':
    app = QtGui.QGuiApplication()
    app.setQuitOnLastWindowClosed(False)
    app.lastWindowClosed.connect(keep_alive)

    window = QtGui.QWindow()
    window.show()

    sys.exit(app.exec_())

Espero que ayude a alguien, funcionó para mí, ya que en mi primer intento no pude anular closeEvent (), ¡falta de experiencia!

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *