There’s a little more to this I’m afraid.
You should be aware that a Python (widget) object, in wxPython, is a proxy to a wxWidget (c++) object. So, even if you Destroy() the c++ side of the widget, the Python object will still be there, altough no more usable.
>>> import wx
>>> app = wx.App()
>>> widget = wx.Dialog(None)
>>> widget.Destroy() # even if I kill the c++ widget...
True
>>> widget # ...its python counterpart is still alive
<wx._core Dialog object at ...>
Of course you could del widget to destroy the python side too… but this is rarely needed: usually, if you don’t need to keep around the python objects, all you have to do is to let them out of scope and have the garbage collector do the job for you.