js_on_event 在 Div 小部件上散景

js_on_event on Div widget in bokeh

是否可以将 js_on_event 用于 Div 小部件?每当在 Div 小部件(点击、按下、鼠标输入、鼠标离开等)上触发事件时,我最终都想在 python 中触发回调,我想通过 js_on_event 是这样做的方法(?)。无论如何,我尝试了以下方法:

from bokeh import events
from bokeh.layouts import layout
from bokeh.models import CustomJS, Div

from lib.bokeh.util.bokeh_util import display

div = Div(style={'background': 'gray', 'min-width': '500px', 'min-height': '500px'})

div.js_on_event(events.Tap, CustomJS(code="""
    console.log("Does this work?")
    """))

display(layout(div, sizing_mode='stretch_both'))

但这似乎没有任何作用。

display 是一个方便的函数,可以触发散景 Server

要触发 Python 回调,您需要 on_eventjs_on_event用于在浏览器中触发JS代码,不与服务器进行任何通信。

但无论哪种方式,Tap 事件仅适用于 Plot 的实例 - 它不适用于任何其他模型,即使它具有视觉表示。

有两种方法可以解决您的问题。如果你只需要像 Tap 事件这样简单的东西,你可以(而且可能应该)使用常规的 Button。但是如果你需要更复杂的东西,你可以创建一个自定义的 Bokeh 模型来处理任何 JS 事件,将它们转换为 Bokeh 事件,并将它们发送到服务器。