我想实现一个实时更新功能,添加列功能基于可编辑DataTablehttps://dash.plotly.com/datatable/editable的留档,以便在CSV文件更新时向可更新的添加一列。我有回调工作,我可以添加新的列,因为新的CSV数据是通过实时更新更新的,但我遇到了一些问题。在我的第一次尝试中(标记为第一个代码),我声明了一个全局变量(我知道在DASH中是坏的),试图跟踪当前的CSV内容,并将其与更新的CSV文件进行比较,以检查新数据,但此版本失败在初始启动时加载现有的CVS数据,并且只添加新数据。第二个代码将现有的CSV数据加载到列中,但在实时更新时,它只是添加重复的列。我不能简单地用一个新的CSV文件重新制作整个数据,因为如果单元格中有用户输入,那么更新时就会丢失。
因此,我的问题是:如何在不使用Dash中的全局变量的情况下存储某个对象的状态(即CSV数据的行数),以便能够将CSV文件的现有状态与新状态进行比较。我看不出这是如何实现的,因为分配的变量在实时更新时被重置。我读过关于隐藏Div和在用户浏览器会话中存储数据的内容,但我无法让它工作。这是我应该走的方向还是有更优雅的解决方案?
html.Div([dash_table.DataTable(
id='editing-columns',
columns=[{
'name': 'Parameter',
'id': 'column1',
'deletable': True,
'renamable': True
}],
style_cell={
'whiteSpace': 'normal',
'height': 'auto',
'width': '20',
# 'minWidth': '50px',
'textAlign': 'left',
},
data=[
{'column1': j}
for j in table_contents
],
editable=True,
)], className="drug_input"),
#First code
@app.callback(Output('editing-columns', 'columns'),
[Input('graph-update', 'n_intervals')],
[State('editing-columns', 'columns')])
def update_columns(n, existing_columns):
check_length = []
global sierra
with open('assets' + '/' + 'record ' + str(current) + '.csv', 'r') as rf:
reader = csv.reader(rf)
for a in reader:
check_length.append(a[3])
if len(check_length) == 0:
return existing_columns
elif len(check_length) > sierra:
existing_columns.append({
'id': check_length[-1], 'name': check_length[-1],
'renamable': True, 'deletable': True
})
sierra = len(check_length)
return existing_columns
else:
return existing_columns
#Second code
@app.callback(Output('editing-columns', 'columns'),
Input('graph-update', 'n_intervals'),
State('editing-columns', 'columns'))
def update_columns(n, existing_columns):
counter = 0
with open('assets' + '/' + 'record ' + str(current) + '.csv', 'r') as rf:
reader = csv.reader(rf)
for a in reader:
counter = counter + 1
existing_columns.append({
'id': 'counter', 'name': a[3],
'renamable': True, 'deletable': True
})
return existing_columns
我读过关于隐藏分区和在用户浏览器会话中存储数据,但我不能让它工作。这是我应该走的方向还是有更优雅的解决方案?
是的,您应该为此使用store组件。
您可以将所有内容存储在dict中,一个键用于原始文件,另一个键包含用户输入的修改过的文件。确保每个回调都以状态在存储中读取。一个应该输出到表,另一个应该输出到存储。
我有一个带有可删除行和列的dash DataTable对象。我想根据可见行更新图形。我不确定如何创建回调以及要传递哪些参数。在浏览器中删除行时,表对象中存储的数据实际上可能不会更改。
封装了 html+css+js 的曲线图,可以通过代码实时动态更新和显示数据。 本代码中的数据都是模拟的,如果有真实数据替换掉即可。 [Code4App.com]
我是一个非常活跃的Dash用户,我已经开始发现我的Dash使用中有很多限制,我意识到关于如何将组件转换为dash的信息/内容绝对有限,有过时和非常简单的例子...我对Javascript或React几乎没有任何了解,我完全不知道如何转换组件。 我试图将响应式网格布局组件从react.js转换为Ploly Dash,但我不知道在这种情况下应该如何处理属性?链接到组件:https://github.c
如果MPD文件没有任何段URL列表,如何确定DASH媒体的段数?它只有一个段模板,所以我不知道与这个MPD相关联的媒体有多少段。这就是我说的MPD: 我的目标是检索所有存在段的URI。
WebStorm似乎是web开发的IDE,我一直很喜欢它。唯一的问题是过梁的错误强调: 由于这种浅色,我花了相当多的时间进行调试,而错误本来就不应该发生,我环顾四周,没有找到更改颜色的方法。这在WebStorm中可能吗? 即使是黑色的主题也没有强烈对比的下划线。我们能改变它吗?
问题内容: 我同时使用Javafx和线程,并且遇到了这个问题,我制作了一个按钮,然后单击该按钮(使用事件处理程序)时,我做了一个for循环,将按钮更改为1,2,3,4 ,5,然后在每个中间延迟一秒钟。像倒计时! 但是发生的事情是延迟了5秒钟,并将按钮的文本更改为5。 问题是我希望看到它在1到5之间变化,但我看到的只是在5秒延迟结束时为5。我认为它会更改按钮文本,但看不到。我可能与类中的方法有关。