'Remove this ``CanvasWidget`` from its ``Canvas``.  After a
``CanvasWidget`` has been destroyed, it should not be accessed.
Note that you only need to destroy a top-level
``CanvasWidget``; its child widgets will be destroyed
automatically.  If you destroy a non-top-level
``CanvasWidget``, then the entire top-level widget will be
destroyed.
:raise ValueError: if this ``CanvasWidget`` has a parent.
:rtype: None'

def destroy(self):

    if (self.__parent is not None):
        self.__parent.destroy()
        return
    for tag in self.tags():
        self.__canvas.tag_unbind(tag, '<ButtonPress-1>')
        self.__canvas.tag_unbind(tag, '<ButtonPress-2>')
        self.__canvas.tag_unbind(tag, '<ButtonPress-3>')
    self.__canvas.delete(*self.tags())
    self.__canvas = None
