在我的基于Dash的应用程序中,一个按钮会触发一个长时间运行的计算。在结果尚未出现时显示加载动画并让按钮处于非活动状态以便在计算完成之前不会再次单击它不是很好吗?
我正在使用Bulma进行 UI 设计,并希望button is-loading
为此目的使用 CSS 类。
我的第一个想法是有两个回调:一个由按钮单击触发以将按钮设置为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.
任何想法如何使这项工作?