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

使用ui.busy_indicators时ui.output_table不显示加载spinner的问题

问题分析

ui.busy_indicators的全局加载指示器无法在ui.output_table上触发,本质是output_table的渲染事件未被全局busy监听机制捕获,而output_plot和output_data_frame的异步渲染流程会正确触发busy状态。

解决方案

有两种可行的解决方式:

方式一:替换为ui.output_data_frame(推荐)

直接用ui.output_data_frame和render.data_frame替代output_table和render.table,这组组件天然兼容全局busy指示器,还支持排序、筛选等交互功能:

import time
import numpy as np
from shiny import App, render, ui
import pandas as pd

app_ui = ui.page_fluid(
    ui.output_data_frame("table"),
    ui.busy_indicators.use(),
)

def server(input):
    @render.data_frame
    def table():
        time.sleep(3)
        df = pd.DataFrame(np.random.randn(10, 10), columns=[f'col_{i}' for i in range(10)])
        return render.DataGrid(df)

app = App(app_ui, server)

方式二:手动为output_table添加专属spinner

如果必须保留output_table,可以用ui.busy_indicators.spinner直接包裹ui.output_table,强制为该组件绑定加载指示器:

import time
import numpy as np
from shiny import App, render, ui
import pandas as pd

app_ui = ui.page_fluid(
    ui.busy_indicators.spinner(ui.output_table("table")),
    ui.busy_indicators.use(),
)

def server(input):
    @render.table
    def table():
        time.sleep(3)
        df = pd.DataFrame(np.random.randn(10, 10), columns=[f'col_{i}' for i in range(10)])
        return df

app = App(app_ui, server)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 05:13:12