在progressbar.FormatCustomText(python)显示的文本的右侧清除一行

时间:2018-08-15 23:28:54

标签: python progress-bar

我正在将Progressbar2与FormatCustomText一起使用。参数化了文本(例如“%s”),并且要显示的字符串的宽度也有所不同。

比方说,在第一次迭代中,替换文字为“ AA”。在第二次迭代中,文本为“ B”。

进度条在第二次迭代中显示BA而不是B。

是否有一种方法可以清除光标右边到B之后的行末的所有内容?通常,这是通过control-K(chr(11))完成的。

不幸的是,在给FormatCustomText的字符串末尾添加chr(11)会导致每次迭代输出换行符。

还有其他想法吗?

2 个答案:

答案 0 :(得分:0)

在末尾打印“ \ 033 [K]

progressbar.ProgressBar(widgets=[format_custom_text, "\033[K"])

理想情况下,要替换的文本的最大长度应基于终端宽度的百分比。我找到了一种获取宽度的方法,但是可能有更好的方法! (How to get Linux console window width in Python

这在python3 +中有效:

import shutil shutil.get_terminal_size((80, 20)) # Provide default values

答案 1 :(得分:0)

github上有一个better answer