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))