这是我第一次使用Python和Dash,我想知道我在应用程序上做错了什么。 我创建了一个读取SQL的内容的数据框,一切正常。 我有一个多个页面应用程序,一切都在扑灭,直到我添加了此页
#setting up variables
CellaSelezionata = 'A1'
PAGE_SIZE = 12
#dizionario per cambio stringa in numero per filtro tabella
manidict = ['A1','A2','A3','B1','B2','B3','B4','C1','C2','C3','C4','D1','D2','D3','D4']
indexdict = [1,2,3,5,6,7,8,9,10,11,12,13,14,15,16]
#grafica applicazione
dash.register_page(__name__)
layout = html.Div(
children = [
html.Div(children=[
#impostazione del filtro data per il grafico
html.Div(
children=[
html.Div(
children=[
html.Div(
children="Selezione Data", className="menu-title"
),
dcc.DatePickerRange(
id="date-range",
min_date_allowed=data.PlcLogDT.min().date(),
max_date_allowed=data.PlcLogDT.max().date(),
start_date=data.PlcLogDT.min().date(),
end_date=data.PlcLogDT.max().date(),
),
html.Div(
children="Selezione Cella", className="menu-title"
),
dcc.Dropdown(
id="CellSelect",
options=[
{'label': 'A1', 'value' : 'A1'},
{'label': 'A2', 'value' : 'A2'},
{'label': 'A3', 'value' : 'A3'},
{'label': 'B1', 'value' : 'B1'},
{'label': 'B2', 'value' : 'B2'},
{'label': 'B3', 'value' : 'B3'},
{'label': 'B4', 'value' : 'B4'},
{'label': 'C1', 'value' : 'C1'},
{'label': 'C2', 'value' : 'C2'},
{'label': 'C3', 'value' : 'C3'},
{'label': 'C4', 'value' : 'C4'},
{'label': 'D1', 'value' : 'D1'},
{'label': 'D2', 'value' : 'D2'},
{'label': 'D3', 'value' : 'D3'},
{'label': 'D4', 'value' : 'D4'},
],
searchable= True,
clearable= False,
persistence = True,
placeholder= 'Selezionare una Cella...',
value= 'A1'
),
],
className="menu",
),
html.Div(children=[
html.Div(
children=[
html.Div(
children=dcc.Graph(
id='trend',
config={"displayModeBar": True,
},
),
className="card",
),
],
className="wrapper",
),
html.Div(
children=[
html.Div(
children=dash_table.DataTable(
id='manitable',
columns =[
{"name": i,"id" : i} for i in (auxMani.columns)
],
page_current = 0,
page_size = PAGE_SIZE,
page_action = 'custom'
),
),
],
className="wrapper",
),
],
className="Grafici",
),
],
style= {'float' : 'left', 'margin-left' : '200px'},
className="ContainerDx"
),
]),
],
)
目的是在我从datepikerrange或下拉列表中搅动事物时更新表和图。所以我做了一个回调:
dash.callback(
Output(component_id='manitable',component_property= 'data'),
Output(component_id='trend',component_property= 'figure'),
[
Input('manitable', "page_current"),
Input('manitable', "page_size"),
Input(component_id="date-range",component_property= "start_date"),
Input(component_id="date-range",component_property= "end_date"),
Input(component_id="CellSelect",component_property= "value")
],
)
def update_table(page_current,page_size,start_date, end_date,CellaSelezionata):
auxMani.sort_values('plclogdt')
masktime = (
(auxMani.PlcLogDT >= start_date)
& (auxMani.PlcLogDT <= end_date)
)
for i in range(15):
if manidict[i] == CellaSelezionata:
idchamb = i
filtered_data1 = auxMani.loc[masktime, :]
filtered_data2 = filtered_data1.loc[filtered_data1.ChamberNo == indexdict[idchamb]]
# selezione del dataframe in base al dataframe
if CellaSelezionata == 'A1':
df = A1
elif CellaSelezionata == 'A2':
df = A2
elif CellaSelezionata == 'A3':
df = A3
elif CellaSelezionata == 'B1':
df = B1
elif CellaSelezionata == 'B2':
df = B2
elif CellaSelezionata == 'B3':
df = B3
elif CellaSelezionata == 'B4':
df = B4
elif CellaSelezionata == 'C1':
df = C1
elif CellaSelezionata == 'C2':
df = C2
elif CellaSelezionata == 'C3':
df = C3
elif CellaSelezionata == 'C4':
df = C4
elif CellaSelezionata == 'D1':
df = D1
elif CellaSelezionata == 'D2':
df = D2
elif CellaSelezionata == 'D3':
df = D3
elif CellaSelezionata == 'D4':
df = D4
data = (df.iloc[:, [1, 8, 9, 10]])
# print(TrendCella)
data.sort_values('plclogdt')
# maschera per filtrare i dati
mask = (
(data.PlcLogDT >= start_date)
& (data.PlcLogDT <= end_date)
)
filtered_data = data.loc[mask, :]
trend_cella_visualizzazione = {
"data": [
{"x": filtered_data["plclogdt"], "y": filtered_data["cls_setpointtemp"] + 4, "name": "Set-Point",
"type": "lines", "colorway": ["#17B897"]},
{"x": filtered_data["plclogdt"], "y": filtered_data["cls_temp1"], "name": "Temperatura", "type": "lines",
"colorway": ["#DC3912"]},
],
"layout": {
"title": {
"text": "Temperatura della Cella di maturazione " + CellaSelezionata, # [11:],
"xanchor": "center",
},
"yaxis": {
"ticksuffix": " °C"},
"x": 1,
# "colorway": ["#17B897"],
# "colorway": ["#DC3912"],
},
}
return filtered_data2.iloc[page_current*page_size:(page_current+1)*page_size].to_dict('records'), trend_cella_visualizzazione
我正在阅读文档,但我找不到任何有帮助的文档。
有人可以弄清楚我在做什么错吗? 谢谢你
唯一的事情是,如果我创建一个页面应用程序,则该代码将在没有问题的情况下运行,因此我可能会错过有关乘法项目的一些信息。
I有同样的问题,我所有的输出都在乘法上下文中产生了
Duplicate callback output
app = dash.get_app()
# ...
@app.callback( ...
Just
@callback( ...