37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
import sys
|
|
|
|
class ProgressBar:
|
|
def __init__(self, num_elements):
|
|
self.num_elements = num_elements
|
|
self.current_element = 0
|
|
|
|
def show(self, msg=''):
|
|
total_blocks = 10
|
|
blocks_done = ((self.current_element * total_blocks)
|
|
// self.num_elements)
|
|
blocks_to_go = total_blocks - blocks_done
|
|
|
|
print('\r' # Go to the start of the line
|
|
'\x1b[K' # Clear line
|
|
'\x1b[0m' # Restart the "style"
|
|
'\x1b[?7l' # Disable line wrapping
|
|
'|' # Put the first "|"
|
|
+ blocks_done * '█' # Completed blocks
|
|
+ blocks_to_go * ' ' # Uncompleted blocks
|
|
+ '\x1b[7m|\x1b[0m' # End the bar
|
|
+ ' '
|
|
+ msg # Add message
|
|
+ '\x1b[?7h' # Enable line wrapping
|
|
+ '\r', # Go back to the start
|
|
end='')
|
|
|
|
def next_iter(self, msg=''):
|
|
self.current_element += 1
|
|
self.show(msg)
|
|
|
|
def clean(self):
|
|
print('\r' # Go to the start of the line
|
|
'\x1b[K' # Clear line
|
|
'\x1b[0m', # Restart the "style"
|
|
end='')
|