我正在使用 Bokeh DataTable 来呈现一个可编辑的表格,如果用户更改了值,我希望为单元格中的文本着色。
我试图使用HTMLTemplateFormatter
,但我不知道该怎么做。
如果用户更改了第 2 行的值,我希望文本像这样着色:
基于如何为 Bokeh DataTable 中的行和/或单元格着色的示例?:
from bokeh.plotting import curdoc
from bokeh.models import ColumnDataSource
from bokeh.models.widgets import DataTable, TableColumn, HTMLTemplateFormatter
orig_data = dict(
cola=[1, 2, 3, 4, 5, 6],
)
data = orig_data
source = ColumnDataSource(data)
template = """
<div style="color: <%=
(function colorfromint(){
if(orig_data.cola != data.cola){return('red')} // I don't know what to write here
}()) %>;">
<%= value %>
</font>
</div>
"""
formatter = HTMLTemplateFormatter(template=template)
columns = [TableColumn(field="cola", title="CL1", formatter=formatter, width=100)]
data_table = DataTable(source=source,
columns=columns,
editable=True,
width=100)
curdoc().add_root(data_table)
我可以使用HTMLTemplateFormatter
块比较不同的表吗?
如果没有,来自HTMLTemplateFormatter Bokeh 文档:
“格式化程序可以通过传递给格式化的 dataContext 对象访问行中的其他项目”
所以我能想到的一种解决方案是加入表格并与 dataContext 对象进行比较,仅呈现我选择的列
但是,我不知道该怎么做,在我看来,这就像一个“肮脏”的解决方法
我对 python 很熟悉,但我对 Bokeh 很陌生。
有没有一个好的和简单的方法来做到这一点?
也许除了其他方法HTMLTemplateFormatter
?