首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态模式匹配

动态模式匹配
EN

Stack Overflow用户
提问于 2022-05-26 20:58:34
回答 1查看 218关注 0票数 -1

我需要一些了解模式匹配的帮助。我试图根据下拉菜单中的分类选择数生成输入框(或滑块,没关系)。我可以让一些代码正常工作,但我似乎不能使用这些值。

问题1:当我从菜单中选择对象时,输入框不会出现

问题2:输出似乎不能正常工作

问题3:我不知道如何保存和使用在每个框中输入的值

我期望从输入到每个输入框中的值生成一个像1、3、5、9这样的数组,这些值可以用于后续的计算或共享到另一个回调。

提前感谢您的帮助!

代码语言:javascript
复制
from dash import Dash, dcc, html, Input, Output, State, MATCH, ALL

app = Dash(__name__, suppress_callback_exceptions=True)

cols = ['apple', 'orange', 'lemon', 'pear']
app.layout = html.Div([
    dcc.Dropdown(id='add-filter', multi=True, options=[{'label': i, 'value': i} for i in cols]),
    html.Div(id='dropdown-container', children=[]),
    html.Div(id='dropdown-container-output')
])

@app.callback(
    Output('dropdown-container', 'children'),
    Input('add-filter', 'value'),
    State('dropdown-container', 'children'))
def display_inputs(values, children):
    n = len(values)
    new_inputs = [dcc.Input(type='number', id={'type':'filter-dropdown', 'index':i})
        for i in range(n)
        ]
    children.append(new_inputs)
    return children

@app.callback(
    Output('dropdown-container-output', 'children'),
    Input({'type': 'filter-dropdown', 'index': ALL}, 'value')
)
def display_output(values):
    return html.Div([
        html.Div('Dropdown {} = {}'.format(i + 1, value))
        for (i, value) in enumerate(values)
    ])


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

回答 1

Stack Overflow用户

发布于 2022-05-27 03:48:23

代码语言:javascript
复制
from dash import Dash, dcc, html, Input, Output, State, MATCH, ALL

app = Dash(__name__, suppress_callback_exceptions=True)

cols = ['apple', 'orange', 'lemon', 'pear']
app.layout = html.Div([
    dcc.Dropdown(id='add-filter', multi=True, options=[{'label': i, 'value': i} for i in cols]),
    html.Div(id='dropdown-container', children=[]),
    html.Div(id='dropdown-container-output')
])

@app.callback(
    Output('dropdown-container', 'children'),
    Input('add-filter', 'value'),
    State('dropdown-container', 'children'))
def display_inputs(values, children):
    n = len(values)
    print(values)
    return [dcc.Input(type='number', id={'type':'filter-dropdown', 'index':i})
    #return [dcc.Slider(0,5,1, id={'type':'filter-dropdown', 'index':i})
        for i in range(n)
        ]

@app.callback(
    Output('dropdown-container-output', 'children'),
    Input({'type': 'filter-dropdown', 'index': ALL}, 'value')
)
def display_output(values):
    a = []
    for (i, value) in enumerate(values):
        a.append(value)
    print(a)
    return html.Div([
        html.Div('Dropdown {} = {}'.format(i + 1, value))
        for (i, value) in enumerate(values)
    ])


if __name__ == '__main__':
    app.run_server(debug=True)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72397948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档