简体   繁体   English

来自下拉列表的 Dash 中的多个输出

[英]Multiple outputs in Dash from dropdown

I have a dashboard where the user can select alternatives form a dropdown menu.我有一个仪表板,用户可以在其中 select 替代品形成一个下拉菜单。 I wish to add an alert that shows depending of which dropdown alternatives is selected.我希望添加一个警报,显示取决于选择的下拉选项。

Here is an example script:这是一个示例脚本:

import dash
import dash_bootstrap_components as dbc
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output, State

app = dash.Dash(external_stylesheets=[dbc.themes.BOOTSTRAP])



app.layout = html.Div(
    [
        dcc.Dropdown(
        id='dropdown',
        options=[
            {'label': 'New York City', 'value': 'NYC'},
            {'label': 'Montreal', 'value': 'MTL'},
            {'label': 'San Francisco', 'value': 'SF'}
        ],
        value='NYC'
    ),
        html.Hr(),
        dbc.Alert(
            "Hello! I am an alert",
            id="alert-fade",
            is_open=False,
        ),
        html.Hr(),
        html.Div(id='dd-output-container')
    ]
)


@app.callback([
    Output("alert-fade", "is_open"),
    Output("dd-output-container", "children")],
    [Input("dropdown", "value")],
    [State("alert-fade", "is_open")],
)

def toggle_alert(dropdown, is_open):
            if dropdown == "NYC":
                return True
            else:
                return False

def update_output(value):
    return 'You have selected "{}"'.format(value)


if __name__ == "__main__":
    app.run_server(debug=True)

Befor I added the multiple output the alert worked as expected (showing alert only if NYC is selected).在我添加多个 output 之前,警报按预期工作(仅在选择 NYC 时才显示警报)。 But I can not get it to work when adding a second output.但是当添加第二个 output 时,我无法让它工作。

When you target multiple Output elements in Dash, you must define a single callback function which returns multiple values (corresponding to the number of Output elements).当您在 Dash 中定位多个Output元素时,您必须定义一个回调 function 以返回多个值(对应于Output元素的数量)。 In your example, the callback would be something along these lines,在您的示例中,回调将是这些方面的内容,

@app.callback([Output("alert-fade", "is_open"), Output("dd-output-container", "children")],
              [Input("dropdown", "value")])
def toggle_alert(value):
    return value == "NYC", 'You have selected "{}"'.format(value)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM