2021-03-05 17:09:12 +01:00
|
|
|
import sys
|
2021-03-05 15:55:14 +01:00
|
|
|
import threading
|
|
|
|
import time
|
|
|
|
|
|
|
|
|
|
|
|
class SpinnerThread(threading.Thread):
|
|
|
|
|
2021-03-05 17:09:12 +01:00
|
|
|
def __init__(self):
|
2021-03-05 15:55:14 +01:00
|
|
|
threading.Thread.__init__(self)
|
|
|
|
|
|
|
|
self._is_spinning = True
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def _spinner():
|
|
|
|
while True:
|
|
|
|
for cursor in '|/-\\':
|
|
|
|
yield cursor
|
|
|
|
|
|
|
|
def run(self) -> None:
|
2021-03-05 17:09:12 +01:00
|
|
|
print('\t', end='')
|
2021-03-05 15:55:14 +01:00
|
|
|
spinner = self._spinner()
|
|
|
|
while self._is_spinning:
|
2021-03-05 17:09:12 +01:00
|
|
|
print(next(spinner), end='')
|
2021-03-05 15:55:14 +01:00
|
|
|
time.sleep(0.1)
|
2021-03-05 17:09:12 +01:00
|
|
|
print('\b', end='')
|
2021-03-05 16:27:38 +01:00
|
|
|
|
2021-03-05 17:09:12 +01:00
|
|
|
sys.stdout.flush()
|
2021-03-05 15:55:14 +01:00
|
|
|
|
2021-03-10 08:17:52 +01:00
|
|
|
print('done', end='')
|
2021-03-05 15:55:14 +01:00
|
|
|
|
|
|
|
def stop_spinning(self):
|
|
|
|
self._is_spinning = False
|
|
|
|
time.sleep(0.1)
|