Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 确保url参数和下拉选择之间的一致性_Python_Plotly Dash - Fatal编程技术网

Python 确保url参数和下拉选择之间的一致性

Python 确保url参数和下拉选择之间的一致性,python,plotly-dash,Python,Plotly Dash,我有一个带有几个选项的下拉列表,multi=True。我希望选择反映在URL中,但我也希望能够使用URL选择选项 dcc.Location(id='url',refresh=False) ... dcc.Dropdown(id='hp-dropdown', options=index, clearable=False, multi=True ) 当我在下拉列表

我有一个带有几个选项的下拉列表,multi=True。我希望选择反映在URL中,但我也希望能够使用URL选择选项

dcc.Location(id='url',refresh=False)
...
dcc.Dropdown(id='hp-dropdown',
                 options=index,
                 clearable=False,
                 multi=True
                 )
当我在下拉列表中做出新选择时,我有一个更新URL的回调

@app.callback(
    Output('url','search'),
    Input('hp-dropdown','value')
)
def update_url(hps):
    if isinstance(hps, str):
        return '?ids='+hps
    return '?ids=' +','.join(hps)
现在我想做的是用URL中的值更新下拉列表,如下所示

@app.callback(
    Output('hp-dropdown','value'),
    Input('url','search')
)
def update_dropdown(search):
    return search[5:].split(',')

但是,由于循环回调,这是不可能的。我可以用什么图案来代替?这只是我第一次加载页面时出现的问题。如果我在URL中有一个选择,这不会反映在下拉列表中。

您可以添加一个按钮或其他组件,需要用户激活才能运行从URL更新下拉列表的回调(URL作为回调中的
状态
,而不是
输入
)。然后,流程将是按钮->选择->URL。它不再是圆形的,因为按钮不会自动启动

@app.callback(
    Output('url','search'),
    Input('hp-dropdown','value')
)
def update_url(hps):
    if isinstance(hps, str):
        return '?ids='+hps
    return '?ids=' +','.join(hps)