code: def close(self):
          
          if (self.closed):
              return
          print(self.pre, "close")
          for child in self.children:
              child.close()
          self.openglthread = None
          self.gpu_handler = None
          self.closed = True
          self.window.unSetPropagate() # we don't want the window to send the close signal .. which would call this *again* (through close_slot)
          self.window.close()
docs: Called by the main gui to close the containers.  Called also when the container widget is closed
          
          Closed by clicking the window: goes through self.close_slot
          Closed programmatically: use this method directly