Panel w Pythonie - Jak ustawić kolejność wywoływania zdarzeń
Buduję pulpit nawigacyjny za pomocą panelu i próbuję dowiedzieć się, jak zmienić kontrolkę ("próg" w poniższej klasie) uruchomić proces, który aktualizuje atrybut klasy, zanim zostaną wywołane inne funkcje, które będą używać tego atrybutu . Zasadniczo zmiana w widgecie progu powinna zmienić atrybut self.table, a następnie więcej niż 1 funkcja będzie się do niego odwoływać, aby utworzyć tabele i wykresy dla pulpitu nawigacyjnego. Jak to zrobić? To jest początek klasy, w której są deklarowane widgety i inicjowana klasa ....
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)
Odpowiedzi
Oto przykład, w którym zmiana progu parametru powoduje zmianę wartości logicznej, a ponieważ ta wartość logiczna zmienia się, po tym są wyzwalane inne aktualizacje:
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)
Oto kilka innych pytań + odpowiedzi przy użyciu tego samego mechanizmu:
Użyj przycisku, aby wywołać akcję w Panelu ze sparametryzowaną klasą, a po zakończeniu działania przycisku zaktualizuj inną zależność (Holoviz)
Jak automatycznie zaktualizować widżet wyboru z listy rozwijanej po zmianie innego widżetu wyboru? (Panel Pythona pyviz)