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

如何在Flet(Python)应用中正确对齐Pandas Dataframe数据?

问题原因与解决方案

核心原因

终端打印DataFrame时依赖等宽字体,Pandas会自动计算列宽补空格实现对齐;但Flet的普通文本组件(如Text)默认使用非等宽字体,空格宽度不一致,直接输出DataFrame的字符串表示会导致列对齐混乱,且未适配Flet的UI组件特性。

正确实现方式:使用Flet的DataTable组件

不要将DataFrame转为纯文本显示,改用Flet专门的表格组件渲染,步骤如下:

  1. 读取并处理CSV数据
import pandas as pd
import flet as ft

def load_recent_records(csv_path, x=10):
    df = pd.read_csv(csv_path)
    # 取最近X条记录,若有录入时间列则按时间倒序(示例用"timestamp"列)
    # 无时间列直接取最后X行:df.tail(x)
    recent_df = df.sort_values("timestamp", ascending=False).head(x)
    return recent_df
  1. 将DataFrame转换为Flet表格结构
def build_data_table(df):
    # 构建表头
    columns = [ft.DataColumn(ft.Text(col)) for col in df.columns]
    # 构建表格行数据
    rows = []
    for _, row in df.iterrows():
        cells = [ft.DataCell(ft.Text(str(row[col]))) for col in df.columns]
        rows.append(ft.DataRow(cells=cells))
    return ft.DataTable(columns=columns, rows=rows)
  1. 在Flet页面中集成表格
def main(page: ft.Page):
    page.title = "库存标签记录"
    csv_path = "inventory_tags.csv"
    recent_df = load_recent_records(csv_path)
    data_table = build_data_table(recent_df)
    
    # 添加滚动容器避免数据溢出
    page.add(ft.Container(
        content=ft.SingleChildScrollView(
            child=data_table,
            scroll=ft.ScrollMode.AUTO
        ),
        height=400,
        width=page.width - 40
    ))

if __name__ == "__main__":
    ft.app(target=main)

备选方案:强制等宽文本显示(不推荐)

若暂时不想使用DataTable,可通过指定等宽字体+固定格式输出实现对齐:

def get_formatted_df_text(df):
    # 配置Pandas输出格式,确保列宽统一
    pd.set_option('display.max_colwidth', 20)
    pd.set_option('display.width', 1000)
    return df.to_string(index=False)

# 在Flet中使用等宽字体渲染文本
page.add(ft.Text(
    get_formatted_df_text(recent_df),
    font_family="Consolas, monospace",
    white_space="pre"
))

额外注意事项

  • 确保CSV文件编码与Pandas读取编码一致,避免乱码影响对齐
  • 数据更新后需重新加载DataFrame并调用page.update()刷新表格

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:35:16