使用bokeh标签更新布局

时间:2018-10-02 14:00:45

标签: python layout tabs bokeh

我正在使用与此处演示的模板相似的模板为bokeh应用程序创建一个仪表板:

https://towardsdatascience.com/data-visualization-with-bokeh-in-python-part-iii-a-complete-dashboard-dc6a86aa6e23

基本上,我将应用程序的不同功能分为不同的脚本,这些脚本的功能返回一个Panel对象,该对象包含要在main.py上定义的Tabs对象中导入的布局。

例如,这是我的read.py脚本返回的内容:

# First layout / plot
read_layout = bla.layout([firstColRaw,
                           secondColRaw,
                           bmo.Spacer(width=50),
                           thirdColRaw])


def read_tab():
    tab = bmo.Panel(child=read_layout, title='Read in data')
    return tab

这是我main.py上的内容:

from scripts.read import read_tab

# Tabs to select the app function
tab1 = read_tab()

nav_tabs = [tab1]
tabs = bmo.Tabs(tabs=nav_tabs, width=1500)

# Create the main layout
layout_main = bla.column(buttons,
                         tabs,
                         height=300,
                         width=1500)

# Put the tabs in the current document for display
doc.add_root(layout_main)

当我尝试更新选项卡之一的布局时遇到问题。在此特定示例中,我想向用户动态显示环境中正在加载多少原始数据文件。

在这种情况下,我修改了thirdColRaw变量的内容,然后将div添加到布局对象中。

如果我如上所述运行应用程序,则无法更新选项卡的内容。另一方面,如果我不使用Tabs,而是从main.py加载read_layout并将其添加到当前文档中,则布局更新就可以了。

这是否意味着我不能动态修改/添加/删除面板布局组件?还是我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

从散景0.13开始,这是known layout bug。当前正在进行大型PR,以同时解决许多布局问题,包括该问题,但要等到Bokeh 1.1发布后才能准备就绪。同时,我只能建议:

  • 避免使用选项卡和自适应大小调整模式的组合
  • 使用components将图样模板化为非散景布局。