Cómo eliminar una aplicación WxPython cuando el usuario hace clic en el cierre de un marco

Se supone que la aplicación se cierra cuando hago clic en el botón de cierre del marco principal. Pero la forma en que lo implementé, se cierra con unSegmentation fault cuando hago clic en el botón

Me preocupa el cierre seguro del programa, ya que tendré que persistir en el disco más tarde.

Cuál es elforma no violenta adecuada ¿Para terminar una aplicación WxPython a través de un botón de cierre?

Aquí está el bucle "principal" del programa que implementé:

if __name__ == "__main__":
    app = wx.App(False)
    mf = MainFrame(None, title='Spectrum Checker') #subclasses frame
    mf.register_close_callback( app.Destroy) #what is the apt func?
    app.MainLoop()

Aquí es cómo se implementa la devolución de llamada dentro de laMainFrame:

def __init__(self, parent, title):
    ...
    self.Bind(wx.EVT_CLOSE, self._when_closed)

...

def _when_closed(self, event):
if self.__close_callback__:
    self.__close_callback__()

Respuestas a la pregunta(4)

Su respuesta a la pregunta