我需要一些了解模式匹配的帮助。我试图根据下拉菜单中的分类选择数生成输入框(或滑块,没关系)。我可以让一些代码正常工作,但我似乎不能使用这些值。
问题1:当我从菜单中选择对象时,输入框不会出现
问题2:输出似乎不能正常工作
问题3:我不知道如何保存和使用在每个框中输入的值
我期望从输入到每个输入框中的值生成一个像1、3、5、9这样的数组,这些值可以用于后续的计算或共享到另一个回调。
提前感谢您的帮助!
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)发布于 2022-05-27 03:48:23
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)https://stackoverflow.com/questions/72397948
复制相似问题