Panel in Python - Comment définir l'ordre dans lequel les événements sont appelés

Jan 09 2021

Je construis un tableau de bord à l'aide du panneau et j'essaie de comprendre comment modifier un contrôle ("seuil" dans la classe ci-dessous) déclencher un processus qui met à jour un attribut de la classe avant que toute autre fonction ne soit appelée qui utilisera cet attribut . Fondamentalement, un changement dans le widget de seuil devrait changer un attribut self.table, puis plus de 1 fonctions le référenceront pour créer des tables et des graphiques pour le tableau de bord. Comment y parvenir? C'est le début de la classe où les widgets sont déclarés et la classe initialisée ...

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)

Réponses

1 SandervandenOord Jan 10 2021 at 04:14

Voici un exemple où une modification d'un seuil de paramètre change la valeur d'un booléen et, comme ce booléen change, d'autres mises à jour sont déclenchées après cela:

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)

Voici quelques autres questions + réponses utilisant le même mécanisme:

Utilisez le bouton pour déclencher une action dans le panneau avec une classe paramétrée et lorsque l'action du bouton est terminée, une autre dépendance est mise à jour (Holoviz)

Comment mettre à jour automatiquement un widget de sélection déroulante lorsqu'un autre widget de sélection est modifié? (Panneau Python pyviz)