Тире: Вывод(«text2″,»дети») Ошибка типа: объект «Вывод» не может быть подписан

#python #data-science #plotly-dash #dashboard #plotly-python

Вопрос:

Я хочу создать div, в котором я хочу назвать значения продаж в этом и предыдущем годах, выбрав год(в слайдере) на панели мониторинга, но это выдает ошибку. Могу ли я вывести несколько значений? что я делаю не так ?

Изображение ошибки

  html.Div([
        html.Div(id = 'text1'),
        html.Div(id = 'text2'),
        
        
    ],className='create_container2  three columns')



@app.callback(Output('text1', 'children'),
          Output('text2','children')
          [Input('select_years', 'value')],)
def update_graph(select_years):
sales8=df.groupby(['Year'])['Sales'].sum().reset_index()
current_year = sales8[(sales8['Year'] == select_years)]['Sales'].sum()
sales9=df.groupby('Year')['Sales'].sum().reset_index()
sales9['PY']=sales9['Sales'].shift(1)
previous_year=sales9[(sales9['Year']==select_years)]['PY'].sum()




 return [

    html.H6(children='Current Year',id='text1',
            style={'textAlign': 'center',
                   'color': 'white'}),
    
    html.P('${0:,.2f}'.format(current_year),
           style={'textAlign': 'center',
                  'color': 'black',
                  'fontSize': 15,
                  'margin-top': '-10px'}),
     html.H6(children='Current Year',id='text2',
            style={'textAlign': 'center',
                   'color': 'white'}),
    
    html.P('${0:,.2f}'.format(previous_year),
           style={'textAlign': 'center',
                  'color': 'black',
                  'fontSize': 15,
                  'margin-top': '-10px'}),
    

]
 

Ответ №1:

я думаю, что в вашем коде есть несколько ошибок

  1. если у вас более 1 вывода, поместите их в список [] .
  2. когда вы возвращаете свой вывод, вам нужно иметь такое же количество переменных, как и в списке вывода (в вашем случае 2 списка HTML-элементов).

смотрите код ниже, я его не тестировал, так что я могу что-то пропустить

 html.Div([
        html.Div(id = 'text1'),
        html.Div(id = 'text2'),
        
        
    ],className='create_container2  three columns')



@app.callback([Output('text1', 'children'),
          Output('text2','children')],
          [Input('select_years', 'value')],)
def update_graph(select_years):
sales8=df.groupby(['Year'])['Sales'].sum().reset_index()
current_year = sales8[(sales8['Year'] == select_years)]['Sales'].sum()
sales9=df.groupby('Year')['Sales'].sum().reset_index()
sales9['PY']=sales9['Sales'].shift(1)
previous_year=sales9[(sales9['Year']==select_years)]['PY'].sum()




 return [ #text 1 children
    html.H6(children='Current Year',id='text1',
            style={'textAlign': 'center',
                   'color': 'white'}),
    html.P('${0:,.2f}'.format(current_year),
           style={'textAlign': 'center',
                  'color': 'black',
                  'fontSize': 15,
                  'margin-top': '-10px'})],
    [html.H6(children='Current Year',id='text2', #text 2 children 
            style={'textAlign': 'center',
                   'color': 'white'}),
    
    html.P('${0:,.2f}'.format(previous_year),
           style={'textAlign': 'center',
                  'color': 'black',
                  'fontSize': 15,
                  'margin-top': '-10px'}),
]