如何在Dash回调中调用生成的df来应用data_bars等条件格式
Dash回调动态生成表格的条件格式实现方法
核心思路是将表格的style_data_conditional属性也加入回调的输出项,和表格数据在同一个回调中同步生成,直接使用回调内计算得到的DataFrame生成对应条件格式规则即可,无需预先声明全局df。
第一步:调整DataTable初始声明
移除写死的style_data_conditional配置,保留默认空值即可:
dash_table.DataTable( id='kpi_id', columns=[{"name": i, "id": i} for i in TABLE_COLUMNS], data=[], # 初始空数据 style_data_conditional=[] # 初始空条件格式规则 )
第二步:修改回调配置
新增style_data_conditional作为回调输出,在回调内完成数据计算和条件格式规则生成:
@app.callback( [ Output('kpi_id', 'data'), Output('kpi_id', 'style_data_conditional') ], # 按钮触发属性为n_clicks,若你用其他组件传user_role筛选值可对应调整输入属性 [Input(component_id='my_button', component_property='n_clicks')] ) def create_kpi(n_clicks): # 初始无点击状态返回空 if not n_clicks: return [], [] # 替换为你自己的数据源和筛选逻辑,注意不要重名覆盖原df变量 filtered_df = 你的原始df.loc[你的原始df['user_role'].isin(你要筛选的角色列表)] df_kpi_users = kpi(filtered_df) table_data = df_kpi_users.to_dict("records") # 直接用回调内生成的df生成data_bars规则 style_rules = data_bars(df_kpi_users, 'DAU') # 若需添加多列的data_bars或其他条件格式,可直接往style_rules中追加规则 # style_rules += data_bars(df_kpi_users, 'DAU_7') return table_data, style_rules
注意事项
- 原代码中回调输出写为
Output('kpi_id', 'children')属于配置错误,kpi_id是DataTable组件本身,更新表格数据需要修改data属性而非children属性。 - 若你的按钮需要配合其他下拉、多选组件传递筛选参数,只需在回调输入项中添加对应组件的属性即可。
内容的提问来源于stack exchange,提问作者Calafalas
相关产品推荐
相关产品推荐

