js_on_event на виджете Div в боке - PullRequest
0 голосов
/ 15 марта 2020

Можно ли использовать js_on_event для Div виджетов? В конечном счете, я хотел бы вызвать обратный вызов в python всякий раз, когда событие запускается на виджете Div (касание, нажатие, ввод мыши, отпускание мыши и т. Д. c), и я полагаю, что пропуск 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.

1 Ответ

1 голос
/ 15 марта 2020

Чтобы вызвать Python обратные вызовы, вам потребуется on_event. js_on_event предназначен для запуска кода JS в браузере, без связи с сервером.

Но в любом случае событие Tap работает только в случаях Plot - оно не работает на любая другая модель, даже если она имеет визуальное представление.

Существует два способа решения вашей проблемы. Если вам просто нужно что-то простое, например, событие Tap, вы можете (и, вероятно, должны) использовать обычный Button. Но если вам нужно что-то более сложное, вы можете создать собственную модель Bokeh, которая будет обрабатывать любые события JS, преобразовывать их в события Bokeh и отправлять их на сервер.

...