Я знаю, что тема звучит довольно расплывчато, я буду стараться изо всех сил объяснять.
Я новичок и пытаюсь создать пользовательский индикатор выполнения с помощью progressbar2 lib. Моя ОС - Windows 10, мой терминал - стандартная командная строка, и я использую Python 3.8.1.
Я взял пример заполнения анимированного индикатора выполнения из официальных документов и попытался немного измените его, чтобы сделать его цветным, используя управляющие символы 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 видно, что курсор оставляет несколько синих |
символы в консоли при обновлении панели и анимации после появления знака ha sh. Однако, если я оставлю знак ha sh бесцветным, все выглядит отлично (см. 0: 35 ).
Вы также можете видеть, что в первом случае курсор переходит на знак hast при каждом обновлении, а во втором случае он остается в крайнем правом положении.
Итак, есть ли способ исправить это, чтобы знак ha sh оставался красочным и анимированным, но в консоли нет нежелательных |
символов?
Буду признателен за любую помощь.
ОБНОВЛЕНИЕ:
Мне удалось это исправить оборачивая маркеры, составляющие анимацию, в те же цветовые коды 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.