【问题标题】:Dash App: callback executes several times when returning html.DivDash App:回调在返回 html.Div 时执行多次
【发布时间】:2019-05-29 14:30:54
【问题描述】:

我的 Dash 应用中有这些输入和按钮组件:

html.Div(
     dcc.Input(
          id='id_selector',
          placeholder='',
          type='text',
          value=''
     )
),

html.Button(
      type = 'submit',
      id = 'submit-button',
      className = 'btn btn-info',
      children = [
            html.Span('Go!'),
      ]
)

以及这些组件:

html.Div(id='output'),
html.Div(
     dcc.Graph(id='heatmap_id')
)

然后我添加一个这样的回调:

app.callback(
    Output(component_id='output', component_property='children'),
    [Input('submit-button','n_clicks')],
    [State('id_selector', 'value')])

def update_output(n_clicks, input_ID):
    print(input_ID)

    return html.Div(
              "you have selected"+input_ID
           ,id='output')

但是,当我这样做时,回调会执行多次,而不仅仅是在我单击按钮时。

如果我做了这个改变:

app.callback(
        Output('heatmap_id', 'figure'),
        [Input('submit-button','n_clicks')],
        [State('id_selector', 'value')])

def update_output(n_clicks, input_ID):
    print(input_ID)

    {HERE I CREATE A THE FIG}

    fig = go.Figure(data=data, layout=layout)

    return fig

在这种情况下,一切正常,只有当我单击按钮时才会执行回调。

为什么会有这种差异?

因为我想使用第一个选项(返回 html.Div 而不是数字)的原因是因为当我进入我的应用程序时,在第二种情况下我有一个空图,我想在首先。

【问题讨论】:

    标签: callback return plotly-dash


    【解决方案1】:

    我已经解决了, 问题是线

    return html.Div(
              "you have selected"+input_ID
           ,id='output')
    

    应该是:

    return html.Div(
              "you have selected"+input_ID
           )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-24
      • 1970-01-01
      • 2020-05-28
      相关资源
      最近更新 更多