Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.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 防止多页应用程序中的短划线下拉菜单重置为默认值_Python_Callback_Plotly Dash - Fatal编程技术网

Python 防止多页应用程序中的短划线下拉菜单重置为默认值

Python 防止多页应用程序中的短划线下拉菜单重置为默认值,python,callback,plotly-dash,Python,Callback,Plotly Dash,我目前正在尝试用Python的Dash构建一个多页面应用程序(对教程中的一些材料做了一些修改),我想知道当您返回到该页面时,如何防止第一页中的下拉菜单返回到默认值 app.layout = html.Div([ dcc.Location(id='url', refresh=False), html.Div(id='page-content'), ]) index_page = html.Div([ html.Br(), dcc.Link('Go to Page

我目前正在尝试用Python的Dash构建一个多页面应用程序(对教程中的一些材料做了一些修改),我想知道当您返回到该页面时,如何防止第一页中的下拉菜单返回到默认值

app.layout = html.Div([

    dcc.Location(id='url', refresh=False),
    html.Div(id='page-content'),
])

index_page = html.Div([
    html.Br(),
    dcc.Link('Go to Page 1', href='/page-1'),
    html.Br(),
    dcc.Link('Go to Page 2', href='/page-2'),
])

page_1_layout = html.Div([
    dcc.Dropdown(
        id='page-1-dropdown',
        options=[{'label': i, 'value': i} for i in ['LA', 'NYC', 'MTL']],
        value='LA'
    ),
    html.Div(id='page-1-content'),
    html.Br(),
    dcc.Link('Go to Page 2', href='/page-2'),
    html.Br(),
    dcc.Link('Go back to home', href='/'),

])


page_2_layout = html.Div([
    html.Div(id='page-2-content'),
    html.Br(),
    dcc.Link('Go to Page 1', href='/page-1'),
    html.Br(),
    dcc.Link('Go back to home', href='/')
])

@app.callback(Output('page-1-content', 'children'),
              [Input('page-1-dropdown', 'value')])
def page_1_dropdown(value):
    return html.Div([
        html.Div(['You have selected "{}"'.format(value)]),#
    ])

# Update the index
@app.callback(Output('page-content', 'children'),
              [Input('url', 'pathname')])
def display_page(pathname):
    if pathname == '/page-1':
        return page_1_layout
    elif pathname == '/page-2':
        return page_2_layout
    else:
        return index_page
    # You could also return a 404 "URL not found" page here

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

在上面的例子中,当我从下拉菜单中选择例如“NYC”,然后在移回第1页之前移到第2页时,下拉选择返回到默认的“LA”

这似乎是相当直截了当地防止,但我还没有找到一种方法来做到这一点

提前谢谢

您需要为此使用。因此,记录下拉列表的事件状态,因此,如果单击该下拉列表,请标记状态。在您的回调中,查看状态并更新为所选值。关于以下内容:

@app.callback(Output('page-1-dropdown', 'value'),
          [Input('page1_link', 'n_clicks')],
          [State('page-1-dropdown', 'value')])
def drop_down(n_clicks, input1):
    if (n_clicks) >=1 :
        return(input1)

它应该通过启用persistence=True来工作:

dcc.Dropdown(
        id='page-1-dropdown',
        options=[{'label': i, 'value': i} for i in ['LA', 'NYC', 'MTL']],
        value='LA,
        persistence = True   
    )
您可以在此处阅读更多关于此的信息: