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

如何在Python Flet的DataTable中追加记录并通过列表访问?

实现DataTable记录追加功能

要解决点击按钮后追加记录到DataTable、而非重复创建表格的需求,同时保留可直接访问的记录列表,可按以下方式修改代码:

修改思路

  • 初始化一个列表存储所有记录,方便后续业务逻辑调用
  • 预先创建DataTable组件并保存引用,避免每次点击都生成新表格
  • 在点击事件中,将输入内容转为DataRow并追加到现有DataTable的行集合中

完整修改代码

import flet as ft

def main(page: ft.Page):
    # 用于存储所有记录的列表,可随时访问
    records = []
    
    # 预先定义DataTable组件
    data_table = ft.DataTable(
        columns=[
            ft.DataColumn(ft.Text("First name")),
            ft.DataColumn(ft.Text("Last name")),
            ft.DataColumn(ft.Text("Age")),
        ],
        rows=[]  # 初始为空行
    )

    def add_clicked(e):
        # 获取输入框的值
        first_name = new_task.value.strip()
        last_name = new_task1.value.strip()
        age = new_task2.value.strip()
        
        # 简单校验非空(可选)
        if not (first_name and last_name and age):
            return
        
        # 创建新的数据行
        new_row = ft.DataRow(
            cells=[
                ft.DataCell(ft.Text(first_name)),
                ft.DataCell(ft.Text(last_name)),
                ft.DataCell(ft.Text(age)),
            ]
        )
        
        # 追加到DataTable的行集合
        data_table.rows.append(new_row)
        # 同时把数据存入记录列表,方便后续访问
        records.append({
            "first_name": first_name,
            "last_name": last_name,
            "age": age
        })
        
        # 清空输入框
        new_task.value = ""
        new_task1.value = ""
        new_task2.value = ""
        # 更新页面
        page.update()

    # 输入框定义
    new_task = ft.TextField(hint_text="输入名字")
    new_task1 = ft.TextField(hint_text="输入姓氏")
    new_task2 = ft.TextField(hint_text="输入年龄")

    # 将所有组件添加到页面(包括预先创建的DataTable)
    page.add(new_task, new_task1, new_task2, 
             ft.FloatingActionButton(icon=ft.icons.ADD, on_click=add_clicked),
             data_table)

ft.app(target=main)

关键说明

  • records列表:可在代码任意位置直接访问该列表,获取所有已添加的结构化记录数据
  • 复用DataTable组件:提前创建并挂载到页面,后续仅通过data_table.rows.append()追加新行,避免重复生成表格
  • 页面更新:每次追加行后调用page.update()刷新界面,确保新记录即时显示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 01:52:34