Python 防止多页应用程序中的短划线下拉菜单重置为默认值
我目前正在尝试用Python的Dash构建一个多页面应用程序(对教程中的一些材料做了一些修改),我想知道当您返回到该页面时,如何防止第一页中的下拉菜单返回到默认值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
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
)
您可以在此处阅读更多关于此的信息: