def update_from_scale(self, group_name, update_group_entry=True):
        """Update color value from scales and store it.

        This method grabs the color values from an specific
        scale group (from a color space) and uses it to
        update the other scales, the entries and also to
        store the rgb color.

        Parameters
        ==========

        group_name (string)
            used as key to retrieve the group of scales
            from which to update the other scales;
            represents a color model/space name.
        update_group_entry (bool)
            if True, the entries which are referenced by
            the same key as group_name will be updated too.
        """
        ### retrieve values and names from widgets in group

        retrieved_values, retrieved_names = [], []

        for scale in self.scale_map[group_name]:

            retrieved_values.append(scale.get())
            retrieved_names.append(scale.name)

        ### if requested, update corresponding entry group

        if update_group_entry:

            for entry, value in zip(self.entry_map[group_name], retrieved_values):

                entry.set(value, False)

        ### update remaining scale and entry groups

        for key, conversion_operation in COLOR_CONVERSION_MAP[group_name].items():

            ## convert retrieved values
            converted_values = conversion_operation(retrieved_values)

            ## update widget groups

            # note that only widgets which don't belong
            # in the group used to retrieve values are
            # updated (we check if the names are present
            # in the retrieved_names list)

            for scale, entry, value in zip(
                self.scale_map[key], self.entry_map[key], converted_values
            ):

                # if the scale name isn't among the ones
                # from which we retrieve the values, we
                # update its value;
                #
                # there's no need to check the entry's
                # name, cause the scale and entry have
                # the same name

                if scale.name not in retrieved_names:

                    scale.set(value, False)
                    entry.set(value, False)

        ### update the hex and name entries

        ## get color as a tuple of rgb values

        rgb_color = tuple(entry.get() for entry in self.entry_map["rgb"])

        if self.alpha_checkbutton.get():
            rgb_color += (self.entry_map["alpha"].get(),)

        ## update hex entry

        hex_string = full_rgb_to_hex_string(rgb_color)
        self.hex_entry.set(hex_string, False)

        ## update name entries

        html_name = full_rgb_to_html_name(rgb_color)
        pygame_name = full_rgb_to_pygame_name(rgb_color)

        self.html_name_entry.set(html_name, False)
        self.pygame_name_entry.set(pygame_name, False)

        ### finally update the resulting color value
        ### and perform additional tasks
        self.update_color_value()
Update color value from scales and store it.

        This method grabs the color values from an specific
        scale group (from a color space) and uses it to
        update the other scales, the entries and also to
        store the rgb color.

        Parameters
        ==========

        group_name (string)
            used as key to retrieve the group of scales
            from which to update the other scales;
            represents a color model/space name.
        update_group_entry (bool)
            if True, the entries which are referenced by
            the same key as group_name will be updated too.
        
nodezator/colorsman/editor/widgetop.py