code: def resize_children(self):
          
          width = self.width - self.horizontal_padding
          height = self.height - self.vertical_padding
  
          for sprite, props in (get_props(sprite) for sprite in self.sprites if sprite.visible):
              sprite.alloc_w = width
              sprite.alloc_h = height
  
              w, h = getattr(sprite, "width", 0), getattr(sprite, "height", 0)
              if hasattr(sprite, "get_height_for_width_size"):
                  w2, h2 = sprite.get_height_for_width_size()
                  w, h = max(w, w2), max(h, h2)
  
              w = w * sprite.scale_x + props["margin_left"] + props["margin_right"]
              h = h * sprite.scale_y + props["margin_top"] + props["margin_bottom"]
  
              sprite.x = self.padding_left + props["margin_left"] + (max(sprite.alloc_w * sprite.scale_x, w) - w) * getattr(sprite, "x_align", 0)
              sprite.y = self.padding_top + props["margin_top"] + (max(sprite.alloc_h * sprite.scale_y, h) - h) * getattr(sprite, "y_align", 0)
  
  
          self.__dict__['_children_resize_queued'] = False
docs: default container alignment is to pile stuff just up, respecting only
          padding, margin and element's alignment properties