首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Plotly: Checklist回调前的提交按钮?

Plotly: Checklist回调前的提交按钮?
EN

Stack Overflow用户
提问于 2020-10-06 07:08:56
回答 2查看 810关注 0票数 2

我正在开发Dash Data Visualization应用程序,我必须选择核对表中给出的参数,如图所示。当我逐个从核对表中选择/取消选择选项时,每一个输入都会执行后台回叫。

例如,在图像中,您可以看到默认值,我已经选择了所有12个变量。但是假设我只需要选择5个变量,并且我尝试取消选择其他7个变量,每次我取消选择时都会执行后台回调,在本例中是7次,这需要很多时间来执行,而理想情况下我希望它只执行一次。是否可以对下面的代码进行任何更改,例如添加提交按钮,其中后台代码将仅在我需要时执行,而不是在我选择或取消选择检查表项目时执行?

代码语言:javascript
复制
dcc.Checklist(id='parameter-checklist',
    options=checklist_dict,
    value=available_indicators[:]
) 

按照其中一条注释中的说明更新代码:

假设我必须将从文本框中的checklist中选择的文本打印为选项,该文本框的id为' text -is‘。但它应该只在某些提交点击被按下时打印,而不是每次我改变清单的输入时打印。

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-07 19:48:28

好的,经过一些研究,我找到了这个问题的答案。

我们只需要在' if‘语句中使用按钮,然后如果按钮被按下,我们就可以包括检查表操作。

代码可能如下所示:

代码语言:javascript
复制
@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
票数 1
EN

Stack Overflow用户

发布于 2020-10-06 09:30:20

是的,你可以这样做。将新的submit按钮设置为回调的Input,并使用复选框中的值作为State

Edit:假设您在布局中添加了一个ID为"submit_button"的按钮来处理此检查表,这就是您构建回调的方式。这样,核对清单不会激活回调,只会激活按钮。

代码语言:javascript
复制
@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...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64217329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档