2012-02-12 40 views

Respuesta

48

Reemplace el método closeEvent de QWidget en la 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 la señal de QApplication 's aboutToQuit así:

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

Tenga en cuenta que esto no funcionará en el hilo principal está ocupada calculando. Uno debe mover los cálculos a otro hilo para poder cerrar la ventana. – d33tah

+1

tenga en cuenta que en QMainWindow, no hay ningún atributo 'canExit' – Tcll

+1

@Tcll, no hay ningún atributo en la biblioteca Qt (que yo sepa, pero definitivamente no en QWidget o QMainWindow). Ese es el punto: lo define como un controlador personalizado. –

Cuestiones relacionadas