code: def OnDestroy(self, event):
          
          # deregister observers
          if hasattr(self, 'cardmonitor'):
              self.cardmonitor.deleteObserver(self.cardtreecardobserver)
          if hasattr(self, 'readermonitor'):
              self.readermonitor.deleteObserver(self.readertreereaderobserver)
              self.cardmonitor.deleteObserver(self.readertreecardobserver)
          event.Skip()
docs: Called on panel destruction.