首页 > 解决方案 > Dash/Plotly - 使用 multi true 时如何关闭下拉列表中的清除值?

问题描述

基本上,我想知道是否可以确保在下拉列表中始终选择一个值,以便始终提供图表视图?

在此处输入图像描述

标签: plotly-dash

解决方案


在基于下拉列表生成数据的回调中,您可以简单地添加一个检查,以说明何时未选择下拉选项。

由于您已设置下拉列表multi=Truevalue属性将始终是一个列表:

if not dropdown_values:
    # The dropdown_values list is empty, return your graphs...

如果您不喜欢默认占位Select...符,可以使用.placeholderdcc.Dropdown

或者,如果您希望某个选项保持活动状态,您可以在清除该选项或清除每个选项后重新添加此选项:

from dash import Dash
import dash_core_components as dcc
from dash.dependencies import Output, Input, State

default_dropdown_value = "MTL"

app = Dash(__name__)

app.layout = dcc.Dropdown(
    id="dropdown",
    options=[
        {"label": "New York City", "value": "NYC"},
        {"label": "Montreal", "value": "MTL"},
        {"label": "San Francisco", "value": "SF"},
    ],
    value=[default_dropdown_value],
    multi=True,
)


@app.callback(Output("dropdown", "value"), Input("dropdown", "value"))
def dropdown_callback(dropdown_value):
    if not dropdown_value:
        return [default_dropdown_value]
    return dropdown_value


if __name__ == "__main__":
    app.run_server(debug=True)

或者您可以添加一些针对第一个选项并禁用指针事件的 css:

.Select-multi-value-wrapper .Select-value:first-child {
    pointer-events: none;
}

或者你可以完全隐藏x's。这些有一个Select-value-icon你可以针对它们的类​​。


推荐阅读