我正在使用不同的选项卡运行bokeh应用程序。我喜欢在不同的浏览器中打开同一应用程序。因此,我可以在不同的监视器中使用不同的应用程序选项卡。目前,我一次只能连接一个浏览器。我正在使用
tabs = Tabs(tabs = [tab0,tab1])
curdoc().add_root(tabs)
用于打开应用程序。并与
一起运行bokeh serve myapp.py
如何使用bokeh客户端或其他工具?任何可行的例子吗?
在其他浏览器选项卡中打开Bokeh应用程序吗?
答案 0 :(得分:1)
Bokeh的工作方式如下:该应用程序是创建文档的蓝图。有两个文档:一个在python端(在服务器上),一个在javascript端(在浏览器的客户端上)。散景会自动同步两个文档。这意味着,如果您在客户端上打开选项卡,则该选项卡在服务器上也将处于打开状态。
当您现在两次打开一个特定的python文档(例如,两次打开localhost:5006/gui?bokeh-session-id=14831
)时,您将获得一个python文档和两个js文档,并且所有文档均已同步。这意味着,如果您打开标签页,则所有文档(所有js文档)中都会打开该标签页。
如果您想要两个状态不同的js文档,则需要有两个python文档(例如,通过打开localhost:5006/gui
)。现在,这两个python文档不再同步,这使您可以打开两个不同的选项卡
现在,您想拥有多个状态不同的js文档(您希望激活不同的选项卡)。它们不能同步到相同的python文档,因为否则在js文档1中打开选项卡将在js文档2中打开选项卡。因此,您需要两个不同的python文档,但是现在这两个python文档不再同步。
根据您的评论,我认为您想同步部分文档,但不是全部。据我所知,bokeh对此没有任何支持。
您可以尝试的一种方法是禁用选项卡的事件传播。另一种方法是同步您关心的数据。
答案 1 :(得分:0)
我的预期目的是在不同的浏览器(不同的显示器)中查看不同的选项卡。仅凭散景很难做到。我可以在不同的浏览器上打开两个应用程序,但是它将是其他应用程序的镜像(如果我选择选项卡,则在其他应用程序中也可以看到相同的内容),或者它将完全独立。
要同步两个应用程序,我在 astropy 中使用了 SAMP 协议。我创建了一个应用程序作为服务器,另一个创建了客户端。服务器通过 SAMP 协议将变量发送给客户端。现在客户端中已收到服务器中的更改,但是我可以与客户端进行独立的操作。就像我可以随意切换到任何标签一样。就我的目的而言,效果很好。
请参阅
https://docs.astropy.org/en/stable/samp/example_table_image.html