破折号,循环回调输入
Dash, circular callback inputs
我想用 Dash 编写的应用程序有问题。我有两个不同的清单(指标 A,指标 B)。我的目标是用户可以只为一个指标选择多个选项。所以允许选择a,b,c和1。同时selectc和2,3应该也是可以的。另一方面,应防止 a,c 和 1,2 的 select 离子。我的方法是下面的代码:
app.layout = html.Div([
html.Label('indicator A'),
dcc.Checklist(
id = 'i_a',
options=[
{'label': 'a', 'value': 'a'},
{'label': 'b', 'value': 'b'},
{'label': 'c', 'value': 'c'}
],
value = ['a']
),
html.Label('indicator B'),
dcc.Checklist(
id='i_b',
options=[
{'label': '1', 'value': '1'},
{'label': '2', 'value': '2'},
{'label': '3', 'value': '3'}
],
value=['1']
),
])
@app.callback(
Output('i_b', 'value'),
Input('i_a', 'value')
)
def change_b(value_a):
return ['1']
@app.callback(
Output('i_a', 'value'),
Input('i_b', 'value')
)
def change_b(value_b):
return ['a']
这会造成无限循环,因为回调会相互触发。但是,我不知道如何解决这个问题。我很感激任何帮助:)
我认为你需要的是新的circular callbacks能力。查看此页面上的示例,我认为它们与您正在做的非常相似。
我想用 Dash 编写的应用程序有问题。我有两个不同的清单(指标 A,指标 B)。我的目标是用户可以只为一个指标选择多个选项。所以允许选择a,b,c和1。同时selectc和2,3应该也是可以的。另一方面,应防止 a,c 和 1,2 的 select 离子。我的方法是下面的代码:
app.layout = html.Div([
html.Label('indicator A'),
dcc.Checklist(
id = 'i_a',
options=[
{'label': 'a', 'value': 'a'},
{'label': 'b', 'value': 'b'},
{'label': 'c', 'value': 'c'}
],
value = ['a']
),
html.Label('indicator B'),
dcc.Checklist(
id='i_b',
options=[
{'label': '1', 'value': '1'},
{'label': '2', 'value': '2'},
{'label': '3', 'value': '3'}
],
value=['1']
),
])
@app.callback(
Output('i_b', 'value'),
Input('i_a', 'value')
)
def change_b(value_a):
return ['1']
@app.callback(
Output('i_a', 'value'),
Input('i_b', 'value')
)
def change_b(value_b):
return ['a']
这会造成无限循环,因为回调会相互触发。但是,我不知道如何解决这个问题。我很感激任何帮助:)
我认为你需要的是新的circular callbacks能力。查看此页面上的示例,我认为它们与您正在做的非常相似。