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

Multiple outputs in Dash from dropdown

我有一个仪表板,用户可以在其中 select 选择形成一个下拉菜单。我想补充 selected.

显示取决于哪个下拉选项的警报

这是一个示例脚本:

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)

在我添加多重输出之前,警报按预期工作(仅当纽约市 selected 时才显示警报)。但是在添加第二个输出时我无法让它工作。

当您在 Dash 中定位多个 Output 元素时,您必须定义一个包含 returns 多个值(对应于 Output 元素的数量)的回调函数。在你的例子中,回调将是这样的,

@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)