Я сделал строку меню в Da sh, где кнопки относятся к разным страницам, которые имеют разные макеты. При переключении между различными раскладками пользовательский ввод теряется. Есть ли способ сохранить эту информацию, чтобы она оставалась там, когда вы вернетесь на страницу? Короткая версия кода выглядит так:
main_layout = html.Div([
dbc.Container([
dbc.Row([
html.Img(src='data:image/png;base64,{}'.format(base64.b64encode(open(images_directory + "topBanner.png", 'rb').read()).decode()))
], id='upperRow'),
dbc.Row([
dbc.Col(html.Div(className = "blackSolidBar"))
]),
dbc.Row([
dbc.Col(html.Div(id="sideBarTop"), width=2),
dbc.Col(html.Img(src='data:image/png;base64,{}'.format(base64.b64encode(open(images_directory + "button1.png", 'rb').read()).decode()), id = 'button1'), align='center'),
dbc.Col(html.Img(src='data:image/png;base64,{}'.format(base64.b64encode(open(images_directory + "button2.png", 'rb').read()).decode()), id = 'button2'), align='center'),
dbc.Col(html.Img(src='data:image/png;base64,{}'.format(base64.b64encode(open(images_directory + "button3.png", 'rb').read()).decode()), id = 'button3'), align='center'),
dbc.Col(html.Img(src='data:image/png;base64,{}'.format(base64.b64encode(open(images_directory + "button4.png", 'rb').read()).decode()), id = 'button4'), align='center')
], id='buttons'),
dbc.Row([
dbc.Col(html.Div(className = "blackSolidBar"))
]),
dbc.Row([
dbc.Col(dbc.Col(html.Img(src='data:image/png;base64,{}'.format(base64.b64encode(open(images_directory + "sideBar.png", 'rb').read()).decode())), width=1, id='sideBarCol')),
dbc.Col(html.Div(id='tabs-content-inline'), width=10)
])
]),
], id='mainLayout')
app = dash.Dash(__name__, external_stylesheets=[dbc.themes.SUPERHERO],
meta_tags=[
{"name": "viewport", "content": "width=device-width, initial-scale=1"}
])
app.layout = html.Div(main_layout)
tab1_layout = html.Div([
dbc.Container([
dbc.Row([
dbc.Col(html.Div("Input Something", className="smallLabel")),
dbc.Col(dcc.Input(placeholder="",
type ="text",
value=''))
])
])
])
tab2_layout = html.Div([
dbc.Container([
dbc.Row([
dbc.Col(html.Div("Input Something", className="smallLabel")),
dbc.Col(dcc.Input(placeholder="",
type ="text",
value=''))
])
])
])
@app.callback(Output('tabs-content-inline', 'children'),
[Input('button1', 'n_clicks_timestamp'),
Input('button2','n_clicks_timestamp')]
)
def render_tab(click1, click2):
if click1 == None:
click1 = 0
if click2 == None:
click2 = 0
if click2 > click1
return tab2_layout
else:
return tab1_layout
if __name__ == '__main__':
app.run_server(debug=True)