Панель в Python - Как установить порядок, в котором вызываются события
Я создаю приборную панель, используя панель, и пытаюсь понять, как изменить элемент управления («порог» в приведенном ниже классе) запустить процесс, который обновляет атрибут класса до того, как будут вызваны какие-либо другие функции, которые будут использовать этот атрибут. . По сути, изменение в виджете порогового значения должно изменить атрибут self.table, и тогда более 1 функции будут ссылаться на него для создания таблиц и графиков для панели мониторинга. Как этого добиться? Это начало класса, в котором объявлены виджеты и инициализирован класс ....
class BinaryPerformDashComponents(param.Parameterized):
bins = param.ObjectSelector(default=10, objects=[], label='Number of Bins')
threshold = param.Number(default=0.5, step=0.01, bounds=(0, 1), allow_None=False)
def __init__(self, actual, pred, df, *args, **kwargs):
super(type(self), self).__init__(*args, **kwargs)
self.param.bins.objects =[5,10,20,50,100] # set the list of objects to select from in the widget
self.df = self.create_df(actual,pred,df)
Ответы
Вот пример, в котором изменение порогового значения параметра изменяет значение логического значения, и, поскольку это логическое значение изменяется, после этого запускаются другие обновления:
import param
import panel as pn
pn.extension()
class BinaryPerformDashComponents(param.Parameterized):
bins = param.ObjectSelector(default=10, objects=[5,10,20,50,100], label='Number of Bins')
threshold = param.Number(default=0.5, step=0.01, bounds=(0, 1))
boolean_ = param.Boolean(True)
@param.depends('threshold', watch=True)
def _update_boolean(self):
self.boolean_ = not self.boolean_
@param.depends('boolean_', watch=True)
def _update_bins(self):
self.bins = 20
instance = BinaryPerformDashComponents()
pn.Row(instance)
Вот еще несколько вопросов + ответы с использованием того же механизма:
Используйте кнопку для запуска действия в Panel с параметризованным классом, и когда действие кнопки завершено, обновите другую зависимость (Holoviz)
Как мне автоматически обновить виджет выпадающего выбора при изменении другого виджета выбора? (Панель Python pyviz)