PySide / PyQt определяет, пытается ли пользователь закрыть окно - PullRequest
19 голосов
/ 12 февраля 2012

есть ли способ определить, пытается ли пользователь закрыть окно? Например, в Tkinter мы можем сделать что-то вроде этого:

def exit_dialog():
    #do stuff
    pass

root = Tk()
root.protocol("WM_DELETE_WINDOW", exit_dialog)
root.mainloop()

Спасибо.

1 Ответ

56 голосов
/ 12 февраля 2012

Переопределить closeEvent метод QWidget в вашем главном окне.

Например:

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

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

Другая возможностьдолжен использовать QApplication s aboutToQuit, например, так:

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