通过回调更改破折号清单值

问题描述 投票:0回答:2

我想通过回调更改绘图破折号清单的选定选项。我的最小工作示例如下(值应通过点击“加载”按钮进行更改 - >加载页面时未选择任何内容,单击按钮“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)
python plotly-dash
2个回答
0
投票

Plotly Dash 主页有很多很棒的资源 - 请查看:https://dash.plotly.com/basic-callbacks

向下滚动到标题为“带有链式回调的 Dash 应用程序”的部分,您将几乎找到您正在寻找的内容。


0
投票

有一些小错误导致了我想在这里提到的问题:

  • 代码中没有dcc.Checklist的id
  • 必须有退货声明。就我而言,没有定义返回
  • if
    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 []

感谢AnnMarieWplotly论坛上发现错误! 请参阅论坛上的原始帖子

© www.soinside.com 2019 - 2024. All rights reserved.