Python Bokeh 2.0.1 - обратный вызов JS для UndoTool? - PullRequest
0 голосов
/ 16 апреля 2020

Я недавно начал работать с Bokeh 2.0.1 на Anaconda. Моя главная цель состоит в том, чтобы визуализировать некоторые наборы данных в виде автономных html файлов с помощью инструментов меню Bokeh.

В дополнение к существующим инструментам я добавил функцию, в которой DoubleTap размещает метку на графике на координаты крана. Он работает как запланировано, однако я хочу, чтобы эта операция была отменяемой через стандартный Bokeh UndoTool. Я попытался добавить пользовательский обратный вызов JS к экземпляру UndoTool рассматриваемой фигуры. Однако я не могу заставить это работать - когда я нажимаю кнопку «Отменить» на рисунке, добавленная метка не исчезает. По-видимому, «отменяющий» обратный вызов не срабатывает.

Я знаю, что «отменяющий» обратный вызов не является проблемой, потому что я также привязал его к кнопке, и он работает как запланировано.

Код концепции:

from bokeh.plotting import figure
from bokeh.events import MenuItemClick, ButtonClick
from bokeh.models import CustomJS, Button
from bokeh.events import DoubleTap

add_label = CustomJS(--something--)
remove_label = CustomJS(--something else--)

f_h = figure(tools='undo')
f_h.js_on_event(DoubleTap, add_label) # Works as planned - adds a label on a double tap

loc_button = Button()
loc_button.js_on_event(ButtonClick, remove_label) # Also works as planned - removes the last added label

f_h.tools[0].js_on_event(MenuItemClick, remove_label) # Doesn't work - aside from the standard scaling undo behavior nothing happens

Заранее спасибо,

PV

1 Ответ

0 голосов
/ 16 апреля 2020

Событие reset:

from bokeh.io import show
from bokeh.models import CustomJS
from bokeh.plotting import figure

p = figure(tools='reset')
p.circle(x=0, y=0)

p.js_on_event('reset', CustomJS(code="console.log('Resetting!')"))

show(p)

...