Jupyter环境下Bokeh的AutocompleteInput点击选项无法补全问题求助
解决Bokeh AutocompleteInput在Jupyter Notebook中点击补全选项无法填充的问题
我之前也碰到过类似的情况,结合你给出的环境(Jupyter Notebook 5.7.4、Bokeh 1.0.4、Firefox 63.0.3、Python3.7)和代码,这大概率是旧版本Bokeh与Jupyter交互的兼容性bug,给你几个实用的解决思路:
1. 优先升级Bokeh版本
Bokeh 1.x早期版本在Jupyter环境的Widget交互上确实存在不少小问题,升级到更稳定的新版本能直接解决这类bug。执行下面的命令就能升级:
pip install --upgrade bokeh
推荐升级到2.x系列的稳定版,这个版本对Jupyter的支持完善了很多。
2. 调整代码的输出模式
在Jupyter Notebook里用Bokeh的show()函数时,有时候需要明确指定输出为Notebook兼容模式。你可以修改代码如下:
from bokeh.models.widgets import AutocompleteInput from bokeh.io import curdoc, show, output_notebook from bokeh.layouts import layout # 先初始化Notebook输出模式,确保加载正确的JS资源 output_notebook() cList1 = ["你的补全选项1", "你的补全选项2"] # 替换成你实际的补全列表 input_widget = AutocompleteInput(completions=cList1, title='FTTH Keys', value='') l = layout([[input_widget],], sizing_mode='fixed') curdoc().add_root(l) curdoc().title = 'UI Test' show(l)
添加output_notebook()能让Bokeh在Jupyter环境中正确加载所需的交互JS资源,避免点击补全选项没反应的情况。
3. 检查浏览器版本
你用的Firefox 63.0.3版本有点老旧了,可能对Bokeh的JS渲染存在兼容性问题。试试把Firefox升级到最新稳定版,或者换Chrome浏览器测试下,说不定问题就解决了。
如果上面的方法都不管用,还有个备选方案:把代码保存成.py文件,用Bokeh独立服务器运行。具体操作是:
- 把代码保存为
ui_test.py - 在终端执行命令:
bokeh serve --show ui_test.py
这种方式会启动Bokeh的独立服务器,能避开Jupyter环境的一些限制,交互功能会更稳定。
内容的提问来源于stack exchange,提问作者Chaouki
相关产品推荐
相关产品推荐

