目前,我有一个DateRangeSlider。我想记录滑块的较低范围和较高范围的更改。我遇到了一个解释'mouseup'callback_policy的答案。但是,这会将变化限制在一个滑块上。所以,我想等一段时间才能读取更改后的值,以便我可以记录新的下限和上限。这怎么能实现?Python Bokeh:范围为滑块的回调超时
以下代码一次更改较低范围或较高范围。
from datetime import date
from bokeh.models.widgets import DateRangeSlider
from bokeh.layouts import layout
from bokeh.models import CustomJS
from bokeh.models.sources import ColumnDataSource
from bokeh.io import curdoc
date_range_slider = DateRangeSlider(title="Date Range: ", start=date(2017, 1, 1), end=date.today(), value=(date(2017, 9, 7), date(2017, 10, 15)), step=1, callback_policy='mouseup')
def cb(attr, old, new):
print "Callback"
print date_range_slider.value_as_datetime[0].strftime("%Y-%m-%d"), date_range_slider.value_as_datetime[1].strftime("%Y-%m-%d")
source = ColumnDataSource(data=dict(value=[]))
source.on_change('data', cb)
date_range_slider.callback = CustomJS(args=dict(source=source), code="""
source.data = { value: [cb_obj.value] } """)
sizing_mode = 'fixed'
l = layout(children=[[date_range_slider]],sizing_mode='fixed')
curdoc().add_root(l)
curdoc().title = "DateRangeSlider"
curdoc().add_root(source)
在服务器上更改滑块值,我得到下面的输出:
回调
2017年5月5日2017年7月22日
回调
2017-05-26 2017-07-22
而且,这是我想达到的目标:
回调的变化发生
2017年5月5日2017年7月22日