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

如何更新NiceGUI表格?点击按钮读Excel后无法更新原有表格

解决NiceGUI表格更新问题

你代码里的核心问题是:ui.table.from_pandas()是类方法,专门用来创建新的Table组件实例,而不是更新已有的表格。所以你在按钮事件里调用它,只会生成新表格,不会修改原来的mytable。

要实现原有表格的更新,需要直接修改已有Table实例的columns和rows属性,然后触发组件更新。修改后的代码如下:

from nicegui import ui
import pandas as pd

def compare():
    ui.notify("reading......")
    # 读取Excel文件
    df = pd.read_excel("1.xlsx")
    # 将DataFrame转换为表格需要的columns和rows格式
    columns = [{'name': col, 'label': col, 'field': col} for col in df.columns]
    rows = df.to_dict('records')
    # 更新已有表格的属性
    mytable.columns = columns
    mytable.rows = rows
    # 触发组件更新
    ui.update(mytable)
    ui.notify("complete......")
    
with ui.row():
    compare_btn = ui.button(text="test", on_click=compare)

# 初始化空表格
mytable = ui.table(columns=[], rows=[]).style("width:100%;height:100%;")

ui.run()

关键说明:

  • 初始化表格时,直接创建空的ui.table实例,而不是用from_pandas(因为此时df是空的,没必要用类方法)
  • 读取Excel后,把DataFrame的列转换成表格要求的columns格式(每个列需要name、label、field三个字段)
  • 把DataFrame的行转换成字典列表格式(用df.to_dict('records'))
  • 直接给mytable的columns和rows赋值,再调用ui.update(mytable)刷新组件

这样就能实现点击按钮后,在原有表格上更新内容,而不会创建新表格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 08:13:27