我想以編程方式更改DataTable對象的行選擇(沒有JS,只是python)。我試圖如此使用底層ColumnsSource的selected
屬性,但沒有成功。如何才能做到這一點?散景:DataTable - 如何設置選定的行
9
A
回答
2
查看示例應用程序(需要散景運行)按下按鈕更改所選行,然後更新表格和繪圖。這是你需要的所有功能嗎?通過這種方式,你可以在JS中做,而不需要使用散景服務器,但如果你有更多的Python功能,那麼我想你需要它。
from datetime import date
from random import randint
from bokeh.io import output_file, show, curdoc
from bokeh.plotting import figure
from bokeh.layouts import widgetbox, row
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)],
)
def update():
#set inds to be selected
inds = [1,2,3,4]
source.selected = {'0d': {'glyph': None, 'indices': []},
'1d': {'indices': inds}, '2d': {}}
# set plot data
plot_dates = [data['dates'][i] for i in inds]
plot_downloads = [data['downloads'][i] for i in inds]
plot_source.data['dates'] = plot_dates
plot_source.data['downloads'] = plot_downloads
source = ColumnDataSource(data)
plot_source = ColumnDataSource({'dates':[],'downloads':[]})
table_button = Button(label="Press to set", button_type="success")
table_button.on_click(update)
columns = [
TableColumn(field="dates", title="Date", formatter=DateFormatter()),
TableColumn(field="downloads", title="Downloads"),
]
data_table = DataTable(source=source, columns=columns, width=400, height=280)
p = figure(plot_width=400, plot_height=400)
# add a circle renderer with a size, color, and alpha
p.circle('dates','downloads',source=plot_source, size=20, color="navy", alpha=0.5)
curdoc().add_root(row([table_button,data_table,p]))
+0
它看起來像使選擇棒的關鍵是這條線,整個選定的對象需要更新。我需要在我自己的應用程序中進行驗證。但是像上面那樣運行應用程序可以正確選擇事物。是的,你是對的,我需要做的其他事情需要一個應用程序,而不僅僅是js。 – Thornhale
+1
是的,你需要更換整個對象,我認爲這可能是由於嵌套的級別而未檢測到更改。 – Anthonydouc
0
只是爲了清楚起見,您必須完全替換source.selected屬性才能觸發更改。因此,重要的路線是:
source.selected = {'0d': {'glyph': None, 'indices': []},
'1d': {'indices': inds}, '2d': {}}
單獨設置在source.selected的項目不起作用
source.selected['1d']['indices'] = inds # Doesn't work
相關問題
- 1. 如何從散景中的DataTable對象中選擇文本
- 2. 如何?:設置散景w/Redis後端
- 3. 如何設置ListView選定行的可繪製背景?
- 4. 如何在散景中設置固定yaxis界限?
- 5. 如何設置選定的表格行
- 6. 如何使用滾動選項在DataTable中設置行高?
- 7. 如何設置DataTable中
- 8. 如何設置自定義列表中選定行的背景顏色?
- 9. 如何在分組的UITableView上設置選定的背景色
- 10. 如何設置散景圖的初始縮放?
- 11. Flex LinkBar:如何設置選定按鈕的背景顏色?
- 12. 如何在UITableView中設置UITableViewCell的選定背景顏色
- 13. 如何將背景顏色設置爲DevComponents.AdvTree.AdvTree的選定節點?
- 14. WPF ListView - 我如何設置選定的項目背景顏色?
- 15. 設置選定的列表視圖行的背景
- 16. 如何引用選定的散景數據點
- 17. 如何設置Listview備用行顏色和選定的項目背景顏色
- 18. 如何設置選定的選項
- 19. 在TStringGrid上設置選定行的背景顏色
- 20. 在Angular UI Grid中設置選定行的背景顏色
- 21. 在ASP.Net ListView的選定行上設置背景顏色?
- 22. 如何設置背景進行修復?
- 23. 如何設置JQGRID行背景顏色?
- 24. 如何將背景圖像設置爲選定狀態?
- 25. 如何設置背景顏色,同時選擇NSOutlineView行
- 26. Gtk.TreeView:Python中如何設置背景色行選擇時樹狀
- 27. 在WPF中設置Datagrid的選定行
- 28. 將DataTable行的RowState設置爲刪除
- 29. 如何設置/獲取DataTable中的每一行的自定義數據
- 30. 如何設置包DataTable的基於特定字符文本
我知道這是不是一個完整的答案的。我基本上正在嘗試做同樣的事情。我的經驗目前如此。從Python中,我可以設置ds.selected ['1d'] ['indices'] = [選定索引列表],但這不會傳播到前端。相反,當我以類似的方式通過js設置索引時,我可以獲取數據表以選擇行。但不知何故,這些變化 - 儘管「被證實」 - 不會註冊。因此,如果有像以下這樣的事件偵聽器:ds.onchange('selected',....),那麼所選屬性的這些更改將無法識別。我正在考慮提交一個錯誤。 – Thornhale
你在問什麼,我是/正試圖在這裏找到答案:https://stackoverflow.com/questions/44960975/how-do-i-pre-select-rows-in-a-bokeh-widget -datatable。 – Thornhale
這是在散景應用程序或筆記本? – mattjegan