コード例 #1
0
ファイル: container.py プロジェクト: 602p/spacegame
    def _config(self, **kwargs):
        """
          widgets: ``list`` Contains widgets to be added at creation time.
              The order of widgets in the list denotes order they receive
              focus when user hits :kbd:`TAB`.
          border: ``int`` Number of pixels to space around edges when ``surf``
              is not given.
          col: ``tuple`` (r,g,b) Colour for background, 0 is transparent.

        """
        for key in ("border", "col"):
            if key in kwargs:
                self._settings[key] = kwargs[key]

        if "widgets" in kwargs:
            self._settings["widgets"] = pygame.sprite.Group()
            self._focus = Focus()
            self._order = []
            pad = self._settings["border"]
            for w in kwargs["widgets"]:
                w._parent = self
                w.pos = (w.rect.x + pad, w.rect.y + pad)
                self._settings["widgets"].add(w)
                if w._can_focus: self._order.append(w)
                if w._label is not None:
                    self._settings["widgets"].add(w._label)
            if not hasattr(self, "image"):

                def width_label(w):
                    if w._label is None:
                        return w.rect.right
                    else:
                        return max(w.rect.right, w._label.rect.right)

                def height_label(w):
                    if w._label is None:
                        return w.rect.bottom
                    else:
                        return max(w.rect.bottom, w._label.rect.bottom)

                w = max(kwargs["widgets"], key=width_label)
                if w._label is not None:
                    w = max(w.rect.right, w._label.rect.right)
                else:
                    w = w.rect.right
                h = max(kwargs["widgets"], key=height_label)
                if h._label is not None:
                    h = max(h.rect.bottom, h._label.rect.bottom)
                else:
                    h = h.rect.bottom
                self._create_base_images((w + pad, h + pad))