如何为Panel添加CustomJS回调?

时间:2017-11-06 00:04:26

标签: python bokeh

如何为Bokeh面板添加CustomJS回调?例如,说我想要 根据选项卡中当前选定的Panel更改bokeh.model.Div中的文本。 我天真的尝试是这样的:

div = Div(text='Test Div', width=100, height=100)
panel = Panel(child=plot, title=plot.title)
callback = CustomJS(args=dict(div=div), code='div.text = "change successful!";')
panel.js_on_event(events.Tap, callback)

然而这显然不起作用,所以我想知道是否有人可以纠正这个例子?

1 个答案:

答案 0 :(得分:1)

我认为一般方法是在活动面板更改时编写回调函数进行注册。如果您的面板位于"标签"对象,您可以编写CustomJS(如果您使用服务器,则可以编写基于python的回调)。简单的例子如下。

div = Div(text="Pannel 1 is active")

p1text = Div(text="this is Panel 1")
p2text = Div(text="this is Panel 2")
p1 = Panel(child=p1text,title="Panel 1")
p2 = Panel(child=p2text,title="Panel 2")
tabs = Tabs(tabs=[p1,p2])
code = """
var active = tabs.active + 1;
div.text = "Panel "+active+" is active"
"""
callback = CustomJS(args={'tabs':tabs,'div':div}, code=code)
tabs.js_on_change('active',callback)
show(row(div,tabs))