Bokeh自定义JS回调的目的

时间:2018-12-10 05:17:42

标签: bokeh

这个问题可能有点笼统。为什么在Bokeh中存在JS回调? 为什么要为小部件使用CustomJS回调(不带Python函数的)而不是常规事件处理程序函数?

这是CustomJS回调的指南:https://bokeh.pydata.org/en/latest/docs/user_guide/interaction/callbacks.html#customjs-for-range-update

在底部附近,您有一个将Python函数转换为JS的示例:

callback=CustomJS.from_py_func(callback)

但是,当您可以拥有相同的小部件并使用事件处理程序功能时,为什么要经历一下呢?https://bokeh.pydata.org/en/latest/docs/user_guide/interaction/widgets.html#slider

在最后一个链接的示例中,您可以使事件处理程序函数在输入框中的每个更改上运行,而无需涉及CustomJS回调:

def my_text_input_handler(attr, old, new):
 print("Previous label: " + old)
 print("Updated label: " + new)

text_input = TextInput(value="default", title="Label:")
text_input.on_change("value", my_text_input_handler)

让我感到困惑的是,我觉得您应该能够仅通过使用last方法而不使用CustomJS回调来为小部件创建高级事件处理程序。 CustomJS指南(第一个链接)中的许多示例都涉及与小部件(如滑块)的交互。

1 个答案:

答案 0 :(得分:1)

您可以使用CustomJS回调在静态html文件中进行交互。与任何语言翻译工具一样,from_py_func方法将仅限于简单的python函数。

一些对象属性也是bokehjs的内部属性,只能通过Tool.active之类的CustomJS回调来访问