diff --git a/adafruit_progressbar.py b/adafruit_progressbar.py index 5619144..6eea67c 100755 --- a/adafruit_progressbar.py +++ b/adafruit_progressbar.py @@ -117,12 +117,17 @@ def progress(self, value): ), "Progress value must be a floating point value." if self._progress_val > value: # uncolorize range from width*value+margin to width-margin - for _w in range(int(value * self._width + 2), self._width - 2): + # from right to left + _prev_pixel = max(2, int(self._width * self._progress_val - 2)) + _new_pixel = max(int(self._width * value - 2), 2) + for _w in range(_prev_pixel, _new_pixel - 1, -1): for _h in range(2, self._height - 2): self._bitmap[_w, _h] = 0 else: - # fully fill progress bar color - for _w in range(2, self._width * value - 2): + # fill from the previous x pixel to the new x pixel + _prev_pixel = max(2, int(self._width * self._progress_val - 3)) + _new_pixel = min(int(self._width * value - 2), int(self._width * 1.0 - 3)) + for _w in range(_prev_pixel, _new_pixel + 1): for _h in range(2, self._height - 2): self._bitmap[_w, _h] = 2 self._progress_val = value diff --git a/examples/progressbar_simpletest.py b/examples/progressbar_simpletest.py index e5bb43d..70952d3 100644 --- a/examples/progressbar_simpletest.py +++ b/examples/progressbar_simpletest.py @@ -27,10 +27,11 @@ current_progress = 0.0 while True: - while current_progress <= 1.0: - print("Progress: {}%".format(current_progress * 100)) - progress_bar.progress = current_progress - current_progress += 0.05 - if current_progress >= 1.0: - current_progress = 0.0 + # range end is exclusive so we need to use 1 bigger than max number that we want + for current_progress in range(0, 101, 1): + print("Progress: {}%".format(current_progress)) + progress_bar.progress = current_progress / 100 # convert to decimal time.sleep(0.01) + time.sleep(0.3) + progress_bar.progress = 0.0 + time.sleep(0.3)