Обновите значение plotly Da sh d cc .Textarea из того, что вводит пользователь - PullRequest
0 голосов
/ 27 мая 2020

Я создаю плотное приложение Da sh с текстовой областью из основных компонентов da sh (d cc .Textarea). Конечный пользователь хочет сохранить ввод из текстовой области, чтобы его можно было повторно использовать в следующий раз, когда пользователь войдет для обновления этого поля. Мне удалось сохранить содержимое текстовой области, но как мне обновить значение по умолчанию для поля с последними изменениями? Я попытался обновить «значение» и «дочерние элементы» для текстовой области, но это не сработало. Вот код.

folder=r'C:\Temp'
def text_ar_val(file='TextBox1.txt'):
    with open(folder+fr'\Data\{file}','r') as f:
        return f.read()
app = dash.Dash(__name__)
app.layout = html.Div([dcc.Textarea(
                                id='textarea1', className='textarea1',
                                value=text_ar_val()
                            ),
                            html.Div(daq.StopButton(id='save1',className="button",
                                                    buttonText='Save', n_clicks=0))
                        ])
@app.callback(Output('textarea1', 'children'),
              [Input('save1', 'n_clicks'), Input('textarea1','value')])
def textbox1(n_clicks, value):
    if n_clicks>0:
        global folder
        with open(folder+r'\Data\TextBox1.txt','w') as file:
            file.write(value)
            return value

Я тоже пробовал:

@app.callback(Output('textarea1', 'value'),
          [Input('save1', 'n_clicks'), Input('textarea1','value')])

1 Ответ

0 голосов
/ 29 мая 2020

Модуль d cc .Textarea принимает аргументы persistence и persistence_type. Установите persistence = True и persistence_type = 'local'. Установка постоянства в True сообщит приложению, что нужно сохранить последние введенные данные, а установка persistence_type на 'local' сохранит последние введенные данные в window.localStorage. Поэтому, когда пользователь выходит из браузера и возвращается, в поле будет указано значение по умолчанию последних введенных данных. Код будет:

app.layout = html.Div([dcc.Textarea(
                                id='textarea1', className='textarea1',
                                value=text_ar_val(),
                                persistence=True, persistence_type='local'
                            ),
                            html.Div(daq.StopButton(id='save1',className="button",
                                                    buttonText='Save', n_clicks=0))
                        ])

Все, что связано с этим кодом и ниже, остается прежним. Почти все остальные компоненты d cc будут принимать аргументы для persistence и persistence_type (например, d cc .Dropdown).

Для получения дополнительной информации вы можете go на:

https://dash.plotly.com/dash-core-components/textarea

...