来自下拉列表的 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)
我有一个仪表板,用户可以在其中 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)