python bokeh取消选择数据表行

时间:2017-09-04 16:21:44

标签: python select datatable bokeh

我希望能够“重置”data table。我该怎么做?

我为数据表定义了一个on_change('selected', my_callback)回调。回调函数具有以下签名:

def my_callback(self, attr, old, new):
    ...

但是,在调用my_callback处理程序后,我无法取消选择已选择的内容。

我试图操纵new['1d']old['1d']词典但没有成功。

取消选择数据表中的行并返回到未选择任何内容的原始状态的正确方法是什么?

G-groups上有一个similar question,但没有答案。 感谢

2 个答案:

答案 0 :(得分:1)

这是一个散景应用示例。我不知道你要做什么,因为你没有完全发布你的代码。从源中取消选择或更改所选数据的关键是您需要替换整个对象,否则将不会注册更改。通过javascript回调可以实现完全相同的功能。

请参阅此处的相关示例,Bokeh: DataTable - how to set selected rows

from datetime import date
from random import randint
from bokeh.io import curdoc
from bokeh.layouts import widgetbox
from bokeh.models import ColumnDataSource
from bokeh.models.widgets import DataTable, DateFormatter, TableColumn, Button

output_file("data_table.html")

data = dict(
        dates=[date(2014, 3, i+1) for i in range(10)],
        downloads=[randint(0, 100) for i in range(10)],
    )
source = ColumnDataSource(data)

columns = [
        TableColumn(field="dates", title="Date", formatter=DateFormatter()),
        TableColumn(field="downloads", title="Downloads"),
    ]
data_table = DataTable(source=source, columns=columns, width=400, height=280)

def callback():
    source.selected = {'0d': {'glyph': None, 'indices': []},
                       '1d': {'indices': []},
                       '2d': {'indices': {}}}

button = Button(label="Reset all selected cells", button_type="success")
button.on_click(callback)

curdoc().add_root(widgetbox(data_table,button))

答案 1 :(得分:1)

要以编程方式取消选择DataTable行并返回到未选择任何内容的原始状态,则可以在python中使用它:

source.selected.indices = []

其中sourceColumnDataSource的{​​{1}}。