Python Bokeh 基于 python 对象添加警报
Python Bokeh add an alert based on a python object
我正在做一个 Bokeh 页面,我在 Python 中做了一些计算,有时计算会崩溃,我想使用“警报”浏览器弹出窗口让用户知道他们添加了一些错误数据.我使用 this example 并添加了一个 Radiobuttongroup,我只想在 RadioButton 设置为 Make alert
时提醒用户。 (我正在寻找通用的“python 解决方案”)。
from bokeh.io import curdoc
from bokeh.models.widgets import Button, RadioButtonGroup
from bokeh.layouts import column
from bokeh.models.callbacks import CustomJS
button_classify = Button(label="Create Pop-up alert")
callback = CustomJS(args={}, code='alert("hello!");')
callback2 = CustomJS(args={}, code='')
button_group = RadioButtonGroup(labels=['Make alert', 'Dont make an alert'],
active=0)
def determine_button() -> CustomJS:
if button_group.active == 0:
return callback
else:
return callback2
button_classify.js_on_click(determine_button)
layout = column(button_group,
button_classify)
curdoc().add_root(layout)
curdoc().title = "Pop-up Alert"
在您的代码中,您将 JS 回调与 Python 回调混合在一起。您不能将 CustomJS 回调传递给 Python 回调。请参阅下面更正的代码。
如果您想 运行 它作为服务器应用程序,只需注释 show(layout)
并取消注释底部的其他两行,然后 运行 使用 bokeh serve --show myapp.py
。代码适用于 Bokeh v2.1.1
from bokeh.io import curdoc, show
from bokeh.models.widgets import Button, RadioButtonGroup
from bokeh.layouts import column
from bokeh.models.callbacks import CustomJS
button_classify = Button(label="Create Pop-up alert")
button_group = RadioButtonGroup(labels=['Alert ON', 'Alert OFF'], active=0)
code = 'if (button_group.active == 0) { alert("ALERT !"); }'
button_classify.js_on_click(CustomJS(args={'button_group': button_group}, code=code))
layout = column(button_group, button_classify)
show(layout)
# curdoc().add_root(layout)
# curdoc().title = "Pop-up Alert"
我正在做一个 Bokeh 页面,我在 Python 中做了一些计算,有时计算会崩溃,我想使用“警报”浏览器弹出窗口让用户知道他们添加了一些错误数据.我使用 this example 并添加了一个 Radiobuttongroup,我只想在 RadioButton 设置为 Make alert
时提醒用户。 (我正在寻找通用的“python 解决方案”)。
from bokeh.io import curdoc
from bokeh.models.widgets import Button, RadioButtonGroup
from bokeh.layouts import column
from bokeh.models.callbacks import CustomJS
button_classify = Button(label="Create Pop-up alert")
callback = CustomJS(args={}, code='alert("hello!");')
callback2 = CustomJS(args={}, code='')
button_group = RadioButtonGroup(labels=['Make alert', 'Dont make an alert'],
active=0)
def determine_button() -> CustomJS:
if button_group.active == 0:
return callback
else:
return callback2
button_classify.js_on_click(determine_button)
layout = column(button_group,
button_classify)
curdoc().add_root(layout)
curdoc().title = "Pop-up Alert"
在您的代码中,您将 JS 回调与 Python 回调混合在一起。您不能将 CustomJS 回调传递给 Python 回调。请参阅下面更正的代码。
如果您想 运行 它作为服务器应用程序,只需注释 show(layout)
并取消注释底部的其他两行,然后 运行 使用 bokeh serve --show myapp.py
。代码适用于 Bokeh v2.1.1
from bokeh.io import curdoc, show
from bokeh.models.widgets import Button, RadioButtonGroup
from bokeh.layouts import column
from bokeh.models.callbacks import CustomJS
button_classify = Button(label="Create Pop-up alert")
button_group = RadioButtonGroup(labels=['Alert ON', 'Alert OFF'], active=0)
code = 'if (button_group.active == 0) { alert("ALERT !"); }'
button_classify.js_on_click(CustomJS(args={'button_group': button_group}, code=code))
layout = column(button_group, button_classify)
show(layout)
# curdoc().add_root(layout)
# curdoc().title = "Pop-up Alert"