[英]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.