You need to enable JavaScript to run this app. 使用PrettyTable生成表格时是否可以对表格进行着色,且无需使用Tkinter?
优惠活动
大模型
产品
解决方案
定价
更多

使用PrettyTable生成表格时是否可以对表格进行着色,且无需使用Tkinter?

解决方案

PrettyTable原生支持ANSI转义序列实现控制台彩色渲染,无需引入Tkinter等GUI库,仅需要给需要着色的单元格内容包裹对应ANSI颜色转义码即可,PrettyTable会自动忽略转义序列计算表格宽度,不会出现排版错乱问题。

基础颜色规则

  • ANSI前景色编码:30=黑、31=红、32=绿、33=黄、34=蓝、35=紫、36=青、37=白
  • ANSI背景色编码:40=黑、41=红、42=绿、43=黄、44=蓝、45=紫、46=青、47=白
  • 转义格式:\033[颜色编码m要着色的内容\033[0m,末尾的\033[0m是重置样式,避免后续内容被连带着色
  • Windows系统兼容:Win10及以上版本默认支持ANSI序列,低版本可在代码开头加os.system('')开启虚拟终端支持

优化后的代码示例

已修正原有代码中循环重复创建表格的问题,添加着色逻辑:

import os
# 开启Windows低版本ANSI支持,非Windows系统可删除
os.system('')

# 着色辅助函数,简化调用
def color_text(content, front_color=37, back_color=None):
    if back_color:
        return f"\033[{front_color};{back_color}m{content}\033[0m"
    return f"\033[{front_color}m{content}\033[0m"

def draw_board():
    from prettytable import PrettyTable
    x = PrettyTable()
    x.field_names = ["", "", "", "", ""]
    # 示例:将数字7设为红色,数字13设为绿色背景+白色文字,数字20设为蓝色,25设为黄色
    x.add_row([1, 2, 3, 4, 5])
    x.add_row([6, color_text(7, 31), 8, 9, 10])
    x.add_row([11, 12, color_text(13, front_color=37, back_color=42), 14, 15])
    x.add_row([16, 17, 18, 19, color_text(20, 34)])
    x.add_row([21, 22, 23, 24, color_text(25, 33)])
    print(x)

# 调用测试
draw_board()

注意事项

如果需要加粗、下划线等样式,也可以直接在ANSI编码位添加对应样式码,比如1代表加粗,\033[1;31m内容\033[0m就是加粗红色文字。所有主流终端(包括Windows Terminal、Mac自带终端、Linux各发行版终端)都兼容该着色方案,无需安装额外第三方库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 03:27:04