Я пытаюсь найти способ получения наряду с другими отпечатками результата / эволюции индикатора выполнения в приложении pyqt, например, в виджете QPlainTextEdit.
Проблема, с которой я сталкиваюсь, заключается в том, что индикаторы выполнения могут использовать более продвинутый возврат каретки или даже более продвинутое позиционирование курсора, которые в основном не поддерживаются триамами.
Я пробовал io.StringIO
, но \r
остается буквальным.
import io
from tqdm import tqdm
s = io.StringIO()
for i in tqdm(range(3), file=s):
sleep(.1)
выход:
s.getvalue()
Out[24]: '\n\r 0%| | 0/3 [00:00<?, ?it/s]\x1b[A\n\r 33%|###3 | 1/3 [00:00<00:00, 9.99it/s]\x1b[A\n\r 67%|######6 | 2/3 [00:00<00:00, 9.98it/s]\x1b[A\n\r100%|##########| 3/3 [00:00<00:00, 9.98it/s]\x1b[A\n\x1b[A'
, что переводится как:
print(s.getvalue())
0%| | 0/3 [00:00<?, ?it/s]
33%|###3 | 1/3 [00:00<00:00, 9.99it/s]
67%|######6 | 2/3 [00:00<00:00, 9.98it/s]
100%|##########| 3/3 [00:00<00:00, 9.98it/s]
Для ясности, в моих выходных данных я не хочу, чтобы одна строка обновлялась, а только текущее состояние, как это будет напечатано в командной строке.
Есть идеи, как это сделать?
Спасибо!