python - 根据用户输入更新 plotly Dash dcc.Textarea 值
问题描述
我正在创建一个带有 dash 核心组件 (dcc.Textarea) 的文本区域的绘图 Dash 应用程序。最终用户希望保存来自文本区域的输入,以便下次用户进入更新该字段时可以重用它。我能够保存保存文本区域的内容,但是如何使用最新编辑更新该字段的默认值?我尝试更新文本区域的“价值”和“孩子”,但没有奏效。这是代码。
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')])
解决方案
dcc.Textarea 模块接受参数persistence 和persistence_type。设置 persistence=True 和 persistence_type='local'。将persistence 设置为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))
])
这段代码前后的所有内容都保持不变。几乎所有其他 dcc 组件都将接受持久性和持久性类型的参数(例如 dcc.Dropdown)。
欲了解更多信息,您可以访问:
推荐阅读
- python - 高效读取DBF文件的方法python
- google-bigquery - 使用 insertAll 将数据加载到 BigQuery 时每天出现一次“后端错误”
- node.js - 带有 TypeORM 的 Node.js 将错误的时区插入 Azure SQL 数据库
- azure-data-factory - 使用 .NET SDK 运行和监控 ADF 管道运行
- python - Pygame:从精灵表中显示这些船只及其运动的最佳方式是什么?
- javascript - 将 Array 中的每个元素与不同的值相乘?代码不起作用
- python - 如何从 Python 中的现在分词或其他变体中找到单词的词根?
- javascript - 如何使用 moment.js 从当前月份获取前几个月
- r - 多变量观察绘图工具提示
- python-3.x - 即使对象是 None 类型也返回属性