I’m trying to determine if a button can be the output target of a callback, that is, use the
callback output to fire the button to ‘click’?
For example, I’d like the button with id=‘target-button-id’ to be ‘clicked’ id the date-picker-range value(s) change:
@app.callback(
dash.dependencies.Output('target-button-id', '<some-button-attribute>'),
[dash.dependencies.Input('date-picker-range', 'start_date'),
dash.dependencies.Input('date-picker-range', 'end_date')]
)
def click_button_if_date_changed(start_date, end_date):
return <something-to-click-button>
You could try increasing the n_clicks attribute of the button?
Mike - thanks much for the suggestion. I have a follow-up question: how do you get the attributes, in this case, n_clicks, when the button is not in the input? That is, what is the return value if you don’t already know what n_clicks is equal to?
You can use State as an input:
@app.callback(
dash.dependencies.Output(‘target-button-id’, ‘n_clicks’),
[dash.dependencies.Input(‘date-picker-range’, ‘start_date’),
dash.dependencies.Input(‘date-picker-range’, ‘end_date’)],
[dash.dependencies.State((‘target-button-id’, ‘n_clicks’)]
)
def click_button_if_date_changed(start_date, end_date, old_n_clicks):
return old_n_clicks + 1
This will of course only work if you have a second callback that takes (‘target-button-id’, ‘n_clicks’) as an input to do something else.
Spot on answer Mike! Thank you.