2012-02-12 28 views

Odpowiedz

48

Zastąp metodę closeEvent z QWidget w swoim głównym oknie.

Na przykład

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

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

Inną możliwością jest użycie QApplication jest aboutToQuit sygnału tak:

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

zauważyć, że nie będzie działać w głównym gwintem jest zajęty obliczeniową. Należy przenieść obliczenia do innego wątku, aby zamknąć okno. – d33tah

+1

Zauważ, że w QMainWindow nie ma atrybutu 'canExit' – Tcll

+1

@Tcll, w bibliotece Qt nigdzie nie ma atrybutu (według mojej wiedzy, ale zdecydowanie nie w QWidget lub QMainWindow). To jest punkt: definiujesz go jako niestandardową procedurę obsługi. –

Powiązane problemy