我正在开发Dash Data Visualization应用程序,我必须选择核对表中给出的参数,如图所示。当我逐个从核对表中选择/取消选择选项时,每一个输入都会执行后台回叫。
例如,在图像中,您可以看到默认值,我已经选择了所有12个变量。但是假设我只需要选择5个变量,并且我尝试取消选择其他7个变量,每次我取消选择时都会执行后台回调,在本例中是7次,这需要很多时间来执行,而理想情况下我希望它只执行一次。是否可以对下面的代码进行任何更改,例如添加提交按钮,其中后台代码将仅在我需要时执行,而不是在我选择或取消选择检查表项目时执行?
dcc.Checklist(id='parameter-checklist',
options=checklist_dict,
value=available_indicators[:]
)

按照其中一条注释中的说明更新代码:
假设我必须将从文本框中的checklist中选择的文本打印为选项,该文本框的id为' text -is‘。但它应该只在某些提交点击被按下时打印,而不是每次我改变清单的输入时打印。
import dash
import dash_core_components as dcc
available_indicators = ['Vorrollieren_Drehzah_Spindell',
'Vorrollieren_Kraft_Spindell',
'Vorrollieren_Kraft_Vorschub',
'Vorrollieren_Weg']
checklist_dict = [{'label': 'Vorrollieren_Kraft_Spindell',
'value': 'Vorrollieren_Kraft_Spindell'},
{'label': 'Vorrollieren_Kraft_Vorschub',
'value': 'Vorrollieren_Kraft_Vorschub'},
{'label': 'Vorrollieren_Weg', 'value': 'Vorrollieren_Weg'}]
app.layout = html.Div(
[html.H3(children='Data Visualization For AK_Powertrain'),
dcc.Checklist(id='parameter-checklist',
options=checklist_dict,
value=available_indicators[:]
),
)
@app.callback(
[dash.dependencies.Output('text-id', 'value')
],
[dash.dependencies.Input('parameter-checklist', 'value')
])
def update_graph_cluster( parameter_checklist):
return parameter_checklist发布于 2020-10-07 19:48:28
好的,经过一些研究,我找到了这个问题的答案。
我们只需要在' if‘语句中使用按钮,然后如果按钮被按下,我们就可以包括检查表操作。
代码可能如下所示:
@app.callback(
[ dash.dependencies.Input('parameter-checklist', 'value'),
dash.dependencies.Input('btn-nclicks-1', 'n_clicks')])
def do_computation(parameter_checklist, btn1):
changed_id = [p['prop_id'] for p in dash.callback_context.triggered][0]
if 'btn-nclicks-1' in changed_id:
print('button is pressed')
#do checklist operation发布于 2020-10-06 09:30:20
是的,你可以这样做。将新的submit按钮设置为回调的Input,并使用复选框中的值作为State。
Edit:假设您在布局中添加了一个ID为"submit_button"的按钮来处理此检查表,这就是您构建回调的方式。这样,核对清单不会激活回调,只会激活按钮。
@app.callback(
dash.dependencies.Output('text-id', 'value'),
[
dash.dependencies.Input('submit_button', 'n_clicks'),
],
[
dash.dependencies.State('parameter-checklist', 'value'),
])
def update_graph_cluster(button_clicks, parameter_checklist):
# whatever callback code...https://stackoverflow.com/questions/64217329
复制相似问题