【发布时间】:2021-10-08 18:39:36
【问题描述】:
我是 Python 和 Dash 的新手,我不知道如何强制我的应用程序在不使用回调的情况下刷新显示的布局;这是我的代码:
AppMain.py
app.layout = html.Div(
children=[
dcc.Location(
id=ID_URL,
refresh=False
),
html.Div(
[
dcc.Link(
'Test',
href=HREF_PAGE_TEST,
),
dcc.Link(
'Single',
href=HREF_PAGE_SINGLE,
),
dcc.Link(
'Common',
href=HREF_PAGE_COMMON,
),
]
),
html.Div(
id=ID_PAGE_CONTAINER,
),
),
@app.callback(
Output(ID_PAGE_CONTAINER, 'children'),
[Input(ID_URL, 'pathname')],
)
def clickOnPageToShow(pathname):
return findPageToShow(pathname)
def findPageToShow(pathname):
if pathname == HREF_PAGE_TEST:
PageTest.data_frame = shared_data_frame
return PageTest.layout
elif pathname == HREF_PAGE_SINGLE:
PageSingle.data_frame = shared_data_frame
return PageSingle.layout
elif pathname == HREF_PAGE_COMMON:
PageCommon.data_frame = shared_data_frame
return PageCommon.layout
return ""
每个页面都建立自己的布局,用户点击相关的 dcc.Link 选择显示哪一个;此过程运行良好,用户可以随时更改页面。
我现在想要以编程方式构建和显示 PageSingle,所以我尝试添加:
AppMain.showPageSingle()
和
def showPageSingle():
page = findPageToShow(HREF_PAGE_SINGLE)
app.layout[ID_PAGE_CONTAINER].children = [page]
#app.layout[ID_PAGE_CONTAINER].children = page
但是什么也没发生。
我做错了什么? 谢谢
编辑
如何建议我使用单击创建到页面中的表格单元格时引发的回调Common
PageCommon.py
@app.callback(
Output(ID_PAGE_CONTAINER, 'children'),
[
Input(ID_TABLE_COMMON, 'active_cell'),
Input(ID_TABLE_COMMON, 'data')
]
)
def clickOnCell(active_cell, data_table):
if active_cell is not None:
row_index = active_cell['row']
col_index = active_cell['column']
import AppMain
return AppMain.buildPageSingle()
return []
但是在这种情况下,当我选择页面时应用程序没有响应,可能是因为回调无效。
【问题讨论】:
标签: python layout callback plotly-dash