def render(self, progress, width=None, status=None):
        """Render the widget."""
        results = [widget.render(progress, width=self._widget_lengths[i], status=status)
                   for i, widget in enumerate(self._widgets)]

        if self._file_mode:
            res = ""
            for i, result in enumerate(results):
                res += result.rendered
                if result.length < self._widget_lengths[i] and progress < 1: break
                res += " " if i < len(results) - 1 else ""
            rendered_str = res[len(self._rendered):]
            self._rendered = res
        else:
            rendered_str = " ".join(r.rendered for r in results)
            if self._to_render:
                rendered_str = self._to_render + rendered_str
                self._to_render = None
        next_progress = min(r.next_progress for r in results)
        next_time = min(r.next_time for r in results)
        return RenderResult(rendered_str, next_progress=next_progress, next_time=next_time)
Render the widget.