holoviz/param/panel:通过 python 回调更新 Str 或 HTML 窗格

问题描述

我想知道是否有办法通过 python 回调更新 panel 窗格内容

如果我按以下方式定义 Parameterized 自定义类:

import panel as pn
pn.extension()
import param

class Myclass(param.Parameterized):
    letter = param.ObjectSelector(
        objects=['a','b','c','d'],default='b',)
    
    @param.depends('letter')
    def text(self):
        return(pn.pane.Str(self.letter))
    
instance = Myclass()

如果我在笔记本中输出这个实例,我会得到以下信息:

pn.Row(instance.param.letter,instance.text)

产量:

instance representation

但是,当我在下拉列表中选择另一个条目时,右侧的文本没有更新:

Another view on instance

我知道参数已经更新,text 回调被触发(通过调试)。然而,我的笔记本中没有更新。

我觉得这个例子和文档(https://panel.holoviz.org/user_guide/Param.html)中的正弦波例子非常相似,但我不明白我做错了什么......

理想情况下,答案应该也适用于 panel.pane.HTMLpanel.pane.Str

解决方法

我在 jupyter notebook 中尝试了你的代码并且它有效:当下拉列表更改时文本会更新。

如果我在我的 jupyter 实验室中尝试它,它不起作用,但我经常这样做。我认为这是一个 jupyter 版本/安装的东西。

所以我认为你的代码是正确的。您可以尝试更新您的 jupyter notebook 或面板或参数包。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...