我想通过回调更改绘图破折号清单的选定选项。我的最小工作示例如下(值应通过点击“加载”按钮进行更改 - >加载页面时未选择任何内容,单击按钮“SF”后应选择):
import dash
app = dash.Dash(__name__)
app.layout = html.Div([
dcc.Checklist(
options=[
{'label': 'New York City', 'value': 'NYC'},
{'label': 'Montréal', 'value': 'MTL'},
{'label': 'San Francisco', 'value': 'SF'}
],
labelStyle={'display': 'block'},
value=[]
),
html.Button('load', id='load-button', n_clicks=0)
])
@app.callback(Output('checkliste', 'value'),
Input('load-button', 'n_clicks'))
def change_values(n_clicks):
if n_clicks > 1:
return ['SF']
if __name__ == '__main__':
app.run_server(debug=False)
Plotly Dash 主页有很多很棒的资源 - 请查看:https://dash.plotly.com/basic-callbacks。
向下滚动到标题为“带有链式回调的 Dash 应用程序”的部分,您将几乎找到您正在寻找的内容。
有一些小错误导致了我想在这里提到的问题:
n_clicks < 1
表示必须单击按钮两次才能发生某些事情。应该是n_clicks > 0
所以解决办法是:
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
app = dash.Dash(__name__)
app.layout = html.Div(
[
dcc.Checklist(
id="checklist",
options=[
{"label": "New York City", "value": "NYC"},
{"label": "Montréal", "value": "MTL"},
{"label": "San Francisco", "value": "SF"},
],
labelStyle={"display": "block"},
value=[],
),
html.Button("load", id="load-button", n_clicks=0),
]
)
@app.callback(Output("checklist", "value"), Input("load-button", "n_clicks"))
def change_values(n_clicks):
return ["SF"] if n_clicks > 0 else []