holoviz / param / panel: обновление панелей Str или HTML с помощью обратного вызова python

Я хотел бы знать, есть ли способ обновить содержимое панели panel с помощью обратного вызова python.

Если я определю 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)

дает:

представление экземпляра

Однако, когда я выбираю другую запись в раскрывающемся списке, текст справа не обновляется:

Другой взгляд на экземпляр

Я знаю, что параметр был обновлен и что обратный вызов text запущен (через отладку). Тем не менее, в моем ноутбуке нет обновлений.

Мне кажется, что этот пример очень похож на пример синусоидальной волны в документации (https://panel.holoviz.org/user_guide/Param.html), но я не понимаю, что делаю неправильно ...

В идеале ответ должен работать как с panel.pane.HTML, так и с panel.pane.Str.


person Pierre Massé    schedule 08.01.2021    source источник


Ответы (1)


Я попробовал ваш код в блокноте jupyter, и он работает: текст обновляется при изменении раскрывающегося списка.

Если я попробую его в своей лаборатории jupyter, это не сработает, но у меня это происходит чаще. Я думаю, что со мной это связано с версией / установкой jupyter.

Так что я думаю, что ваш код правильный. Вы можете попробовать обновить свой блокнот jupyter или пакеты панели или параметров.

person Sander van den Oord    schedule 08.01.2021
comment
Я не мог точно определить, в чем именно заключалась проблема, но, наконец, мне удалось заставить свой код работать. Я обновил panel, но совершенно уверен, что это само по себе не решило мою первоначальную проблему. Во всяком случае, сейчас он работает, поэтому давайте закроем этот вопрос. Еще раз спасибо, Сандер. - person Pierre Massé; 12.01.2021