V Dash (python), mám problém s posuvníku a radioitem zpětné volání

0

Otázka

Na zpětné volání jsem si dvě chyby:

  1. Vlastnost "slidevalue" byl použit s component ID: "ageslider" v jedné Vstupní položky zpětného volání. Toto ID je přiřazen k dash_core_components.RangeSlider součást v uspořádání, které nepodporuje tuto vlastnost.
  2. TypeError: 'NoneType' objekt není subscriptable

Můj kód je:

dbc.Col([
                html.Div(id='Title_Slider', children='''Milo na ena LOLA''',
                         style={'margin-bottom':'50px', 'text-align':'center'}),
                html.Div(dcc.RangeSlider(id='**ageslider**',min=18,max=60,step=1,value=[18,60],
                        marks={str(Age): str(Age) for Age in data.Age.unique()}
                ), style={'width': '100%', 'padding': '0px 20px 20px 20px'}),

a

@app.callback(
    Output('bar-1', 'figure'),
    Input('dropdown1','value'),
    Input('ageslider','slidevalue'),
    Input('binat','bivalue'))    
def update_line_chart(filter_metric, **vage** , bi_value):
    v_min = **vage**[0]
    v_max = **vage**[1]
#age_filter is a custom func that works
    datac_ = age_filter(data, v_min, v_max)
    a=datac_.groupby([filter_metric,'Attrition']).apply(lambda x:x[filter_metric].count()).reset_index(name='Counts')
    fig = px.line(a, x=filter_metric, y="Counts", color='Attrition',markers=True,height=500, width=700)
    fig.update_layout(plot_bgcolor=colors['background'],paper_bgcolor=colors['background'], font_color=colors['text'])
    return fig

Ví někdo, proč RangeSlider čelí tento problém??

dashboard plotly-dash python python-3.x
2021-11-13 23:06:17
1

Nejlepší odpověď

0

To by mělo být value místo slidevalue

Input('ageslider','value'),

Nemůžu vyzkoušet druhý problém, ale myslím, že value měl by také vyřešit.


Minimální funkční příklad:

import dash
from dash import dcc, html
from dash.dependencies import Input, Output
import dash_bootstrap_components as dbc
import plotly.graph_objs as go
import pandas as pd

data = pd.DataFrame({
    'Age': list(range(18, 61, 5))
})    

app = dash.Dash(__name__)

app.layout = dbc.Col([
    html.Div(id='Title_Slider', children='''Milo na ena LOLA'''),
    dcc.RangeSlider(id='ageslider', min=18, max=60, step=1, value=[18,60],
        marks={str(Age): str(Age) for Age in data.Age.unique()}
    ),
    dcc.Dropdown(id='dropdown1',
                    options=[
                        {'label': 'New York City', 'value': 'NYC'},
                        {'label': 'Montreal', 'value': 'MTL'},
                        {'label': 'San Francisco', 'value': 'SF'}
                    ],
                    value='NYC'
    ),
    dcc.Graph(id='bar-1'),    
    html.Div(id='output-text'),
])

@app.callback(
    Output('bar-1', 'figure'),
    Output('output-text', 'children'),
    Input('dropdown1','value'),
    Input('ageslider','value'),
    #Input('binat','value')
)    
def update_line_chart(dropdown_value, slide_value): #, bi_value):
    print('min_val:', slide_value[0])
    print('max_val:', slide_value[1])
    fig = go.Figure(data=[go.Bar(x=[1, 2], y=slide_value)])
    text = f"{dropdown_value}: min: {slide_value[0]}, max: {slide_value[1]}"
    return fig, text

if __name__ == '__main__':
    app.run_server(debug=True)

enter image description here

2021-11-14 12:04:42

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................