You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在tqdm迭代过程中动态更改进度条颜色?

如何用tqdm动态更改进度条颜色?

我正在用tqdm跟踪任务进度,出于趣味想在每次迭代时动态更改进度条颜色。我知道可以用set_description()更新进度条描述,但没找到类似的颜色修改方法,请问tqdm能实现这个功能吗?我的伪代码示例如下:

from tqdm import tqdm
import time

colors = ["red", "yellow", "green", "cyan", "blue"]

pbar = tqdm(range(5))
for i in pbar:
    pbar.set_color(colors[i])
    time.sleep(0.5)

tqdm本身没有内置的set_color()方法,但可以通过修改进度条的bar_format参数结合ANSI颜色码实现动态变色。终端支持ANSI转义码控制输出颜色,每次迭代时更新bar_format就能替换进度条的颜色。

可运行的实现代码

from tqdm import tqdm
import time

# 映射颜色名称到对应的ANSI终端颜色转义码
color_codes = {
    "red": "\033[31m",
    "yellow": "\033[33m",
    "green": "\033[32m",
    "cyan": "\033[36m",
    "blue": "\033[34m",
    "reset": "\033[0m"  # 重置颜色,避免影响后续终端输出
}

colors = ["red", "yellow", "green", "cyan", "blue"]

pbar = tqdm(range(5))
for i in pbar:
    current_color = color_codes[colors[i]]
    # 自定义bar_format,将进度条整体用当前颜色包裹
    pbar.bar_format = f"{current_color}{{l_bar}}{{bar}}{{r_bar}}{color_codes['reset']}"
    time.sleep(0.5)

补充说明

  • ANSI转义码是终端通用的颜色控制方式,几乎所有现代终端(包括Windows Terminal、Linux/macOS终端)都支持。
  • 必须添加reset转义码,否则进度条的颜色会污染后续的终端输出内容。
  • 如果在Jupyter Notebook中使用tqdm.notebook.tqdm,上述代码同样有效,无需额外调整。

内容的提问来源于stack exchange,提问作者Nevpzo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 07:18:18