Я знаю, что тема звучит довольно расплывчато, я постараюсь объяснить.
Я новичок и пытаюсь создать собственный индикатор выполнения с помощью библиотеки progressbar2. Моя ОС — Windows 10, мой терминал — стандартная командная строка, и я использую Python 3.8.1.
Я взял пример заполняющегося анимированного индикатора выполнения из официальной документации и попытался немного изменить его, чтобы сделать его красочным, используя escape-символы ANSI. Вот мой код:
"""
Displays a fancy progress bar.
:param text: Progress bar text
:return: Progress bar object
"""
V = '\033[38;5;31m'
END = '\033[0m'
bar = \
progressbar.ProgressBar(widgets=[f'{V}{text}{END}', progressbar.Percentage(),
progressbar.Bar(marker=progressbar.AnimatedMarker(fill=f'{V}#{END}'))])
return bar
Но когда я это делаю, я наблюдаю странный побочный эффект. Я сделал короткий скринкаст, чтобы было проще понять: https://youtu.be/p_YpkbJrTa8
В 0:05 вы можете видеть, что курсор оставляет несколько синих символов |
в консоли при обновлении строки и анимации после знака решетки. Однако, если я оставлю решетку бесцветной, все будет выглядеть нормально (см. 0:35).
Вы также можете видеть, что в первом случае курсор переходит на знак hast при каждом обновлении, а во втором случае он остается в крайнем правом положении.
Итак, есть ли способ исправить это, чтобы решетка оставалась красочной и анимированной, но в консоли не было нежелательных символов |
?
Буду признателен за любую помощь.
ОБНОВЛЕНИЕ:
Я смог исправить это, обернув маркеры, составляющие анимацию, с теми же цветовыми кодами ANSI.
V = '\033[38;5;31m'
END = '\033[0m'
bar = \
progressbar.ProgressBar(widgets=[f'{V}{text}{END}', progressbar.Percentage(),
progressbar.Bar(marker=progressbar.AnimatedMarker(markers=f'{V}|/-\\{END}',
fill=f'{V}#{END}'))])
return bar
Теперь символ |
остается в крайнем правом положении, где ему и место, но анимация все еще прерывается. Я сделал еще один скринкаст, чтобы продемонстрировать, что: https://youtu.be/t2YwlBQxcN0
Похоже, отсутствует символ дефиса, и иногда анимированный маркер становится бесцветным (см. 0:09 и особенно 0:21). Я попытаюсь зарегистрировать проблему на GitHub.