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
我正在尝试创建一个包含 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