def pick_colors(
        self,
        color_value,
        widget_width=36,
        icon_width=32,
        position_method_name=("snap_rects_intermittently_ip"),
        position_method_kwargs={
            "dimension_name": "width",
            "dimension_unit": "rects",
            "max_dimension_value": 15,
        },
    ):
        """Execute the picker loop.

        Presents given colors for the user to pick.
        """
        ### treat the color properly in order to obtain a
        ### tuple of full rgb colors

        ## convert color value to a tuple of rgb colors

        try:
            colors = custom_format_color(color_value, "rgb_tuple", False)

        ## XXX maybe show a dialog with the
        ## error message here? or just print on the
        ## screen? probably also log the error;
        ## ponder;

        ## if a value error is raised, though,
        ## it means  there's something wrong with
        ## the given value, so we return earlier
        except ValueError:
            return None

        ### create/set widgets for color picking

        self.prepare_color_widgets(
            colors,
            widget_width,
            icon_width,
            position_method_name,
            position_method_kwargs,
        )

        ### center color picker
        self.center_color_picker()

        ### turn the 'reset' flag off
        self.cancel = False

        ### update screen copy; we'll use it to clean the
        ### screen whenever we draw
        cache_screen_state()

        ### draw everything on screen, only once
        self.draw_once()

        ### loop the loop holder operations of the color
        ### picker
        self.loop()

        ### blit screen copy on screen, so picker objects
        ### vanish from view
        draw_cached_screen_state()

        ### once the loop is exited, return a tuple of picked
        ### colors according to whether the cancel flag
        ### is on or off

        return (
            ## return an empty list if the cancel flag is on
            ()
            if self.cancel
            ## otherwise return a tuple with each picked color
            else tuple(
                color_widget.color
                for color_widget in self.color_widgets
                if color_widget.chosen
            )
        )
Execute the picker loop.

        Presents given colors for the user to pick.
        
nodezator/colorsman/picker/op.py