Переименование свойств меню в тире для нескольких входов / состояний во время обратного вызова - PullRequest
0 голосов
/ 08 июля 2019

Итак, у меня следующая проблема: У меня есть приложение, в которое я могу загрузить свои данные в виде CSV-файла. Я хочу сделать график, который должен быть разделен на столбец классификатора. Я хочу, чтобы пользователь мог выбрать, какой график он хочет построить из выборки, а также какой столбец содержит классификатор.

Я создал объект RadioItem для выбора графика и раскрывающееся меню для выбора столбца классификатора, и я передал бы выбранный график в качестве входных данных и выбранный классификатор в качестве состояния.

Нет, проблема в том, что выбранный элемент из RadioItem, а также из выпадающего меню называется 'value'. Поэтому я бы получил что-то вроде этого:

def RadioItems():
    return dcc.RadioItems(
    options=[
        {'label': 'lineplot', 'value': 'lineplot'},
        {'label': 'None', 'value' : 'None'}

    ],
    value='None',
    id='graph_selector')
def classifier_choice(df):
    '''
    called when data is uploaded
    '''
    columns=df.columns
    classifieroptions= [{'label' :k, 'value' :k} for k in columns]
    return dcc.Dropdown(
            #label='Classifier Column',
            id='classifier_choice',
            options=classifieroptions,
            placeholder='select the classifier column')
app.layout = html.Div([

    dcc.Upload(
        id='upload-data',
        children=html.Div([
            'Drag and Drop or ',
            html.A('Select Files')
        ]),
        style={
            'width': '100%',
            'height': '60px',
            'lineHeight': '60px',
            'borderWidth': '1px',
            'borderStyle': 'dashed',
            'borderRadius': '5px',
            'textAlign': 'center',
            'margin': '10px'
        },
        # Allow multiple files to be uploaded
        multiple=True
    ),
    html.Table(id='output-data-upload'),
    RadioItems(),

    dcc.Graph(id='migration_data'),
    #hidden divs for storing data
    html.Div(id='shared_data', style={'display':'none'})
])
graph_options={'None':print(), 'lineplot':GD.lineplot}
@app.callback(Output('migration_data', 'figure'),
              [Input('graph_selector', 'value')],
              [State('classifier_choice', 'value')])


def get_value(value, value):
    return graph_options[value](df, value, testmode=True)

Несмотря на то, что я получаю ошибку: «AttributeError: у объекта« Div »нет атрибута« keys »»

это, конечно, не имеет никакого смысла, поскольку нет никакого способа провести различие между этими двумя значениями. Есть ли способ переименовать атрибут значения в раскрывающемся меню или присвоить его значение другой переменной следующим образом:

classifier=classifier_choice.value()

или что-то подобное?

...