В моем приложении на основе Dash кнопка запускает длительные вычисления.Разве не было бы неплохо отобразить анимацию загрузки, пока результата еще нет, и сделать кнопку неактивной, чтобы она не нажималась снова до завершения вычислений?
Я использую Bulma для дизайна пользовательского интерфейса и хотел использовать класс CSS button is-loading
для этой цели.
Моя первая идея состояла в том, чтобы иметь два обратных вызова: один, запускаемый нажатием кнопки, чтобы установить кнопку на is-loading
, и один, запускаемыйизмените выходной сигнал, чтобы вернуть его в нормальное состояние.
@app.callback(
Output('enter-button', 'className'),
[
Input('graph', 'figure')
],
)
def set_trend_enter_button_loading(figure_changed):
return "button is-large is-primary is-outlined"
@app.callback(
Output('enter-button', 'className'),
[
Input('enter-button', 'n_clicks')
],
)
def set_trend_enter_button_loading(n_clicks):
return "button is-large is-primary is-outlined is-loading"
Очевидно, что это не работает так:
dash.exceptions.CantHaveMultipleOutputs:
You have already assigned a callback to the output
with ID "enter-button" and property "className". An output can only have
a single callback function. Try combining your inputs and
callback functions together into one function.
Есть идеи, как сделать эту работу?