31 lines
1.0 KiB
Python
31 lines
1.0 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)
|