【问题标题】:Updating the layout using bokeh tabs使用散景标签更新布局
【发布时间】:2019-03-07 16:15:06
【问题描述】:

我正在使用与此处演示的模板类似的模板为我的散景应用创建仪表板:

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 并将其添加到当前文档中,那么布局更新就可以了。

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

谢谢!

【问题讨论】:

    标签: python layout tabs bokeh


    【解决方案1】:

    从 Bokeh 0.13 开始,这是 known layout bug。目前有一个大型 PR 正在进行中,以同时解决许多布局问题,包括这个,但在 Bokeh 1.1 发布之前它不会准备好。同时,我只能建议:

    • 避免标签和响应式大小模式的组合
    • 使用components 将绘图模板化为非散景布局。

    【讨论】:

    • 感谢您的提醒!由于我确实需要响应式布局,我想我现在需要避免使用标签。
    猜你喜欢
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多