Python Dash - 组合两个回调函数

Python Dash - Combining two callback functions

我正在尝试创建一个包含 table 的 dash 应用程序。 table 有两个功能:添加用户可以填写的空行,以及使用底层 csv 文件中的最新信息刷新应用程序。当我 运行 我的应用程序时,出现此错误: 您已经为 ID 为 "table" 和 属性 "data" 的输出分配了回调。一个输出只能有一个回调函数。尝试将您的输入和回调函数合并为一个函数。

有没有办法把下面两个回调函数合二为一?

@app.callback(dash.dependencies.Output('table', 'data'),
              [dash.dependencies.Input('refresh-button', 'n_clicks')])
def refresh(n_clicks):    
    if n_clicks > 0:
        data = pd.read_csv(partnernship_data).to_dict('records')
    return data

@app.callback(
        Output('table', 'data'),
        [Input('editing-rows-button', 'n_clicks')],
        [State('table', 'data'),
         State('table', 'columns')])
def add_row(n_clicks, rows, columns):
    if n_clicks > 0:
        rows.append({c['id']: '' for c in columns})
    return rows

我认为您在这里想要的是使用回调上下文功能的回调(请参阅文档的 this page)。我没有 运行 这个,但希望它非常接近。

@app.callback(
        Output('table', 'data'),
        [Input('editing-rows-button', 'n_clicks'),
         Input('refresh-button', 'n_clicks')],
        [State('table', 'data'),
         State('table', 'columns')])
def add_row(edit_rows_button, refresh_button, rows, columns):
    button_id = dash.callback_context.triggered[0]['prop_id'].split('.')[0]
    if button_id == 'editing-rows-button' and edit_rows_button:
        rows.append({c['id']: '' for c in columns})
        return rows
    elif button_id == 'refresh-button' and refresh_button:
        data = pd.read_csv(partnernship_data).to_dict('records')
        return data
    else:
        raise dash.exceptions.PreventUpdate