Я недавно начал работать с 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