Panel in Python - Festlegen der Reihenfolge, in der Ereignisse aufgerufen werden

Jan 09 2021

Ich erstelle ein Dashboard mithilfe des Bedienfelds und versuche herauszufinden, wie eine Änderung eines Steuerelements ("Schwellenwert" in der folgenden Klasse) einen Prozess auslösen kann, der ein Attribut der Klasse aktualisiert, bevor andere Funktionen aufgerufen werden, die dieses Attribut verwenden . Grundsätzlich sollte eine Änderung im Schwellenwert-Widget ein Attribut self.table ändern, und dann verweisen mehr als 1 Funktionen darauf, um Tabellen und Diagramme für das Dashboard zu erstellen. Wie kann das geschehen? Dies ist der Beginn der Klasse, in der die Widgets deklariert und die Klasse initialisiert werden.

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)

Antworten

1 SandervandenOord Jan 10 2021 at 04:14

Hier ist ein Beispiel, in dem eine Änderung eines Parameterschwellenwerts den Wert eines Booleschen Werts ändert. Da sich dieser Boolesche Wert ändert, werden danach andere Aktualisierungen ausgelöst:

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)

Hier sind einige andere Fragen + Antworten, die denselben Mechanismus verwenden:

Verwenden Sie die Schaltfläche, um eine Aktion in Panel mit parametrisierter Klasse auszulösen. Wenn die Schaltflächenaktion abgeschlossen ist, wird eine weitere Abhängigkeit aktualisiert (Holoviz).

Wie aktualisiere ich automatisch ein Dropdown-Auswahl-Widget, wenn ein anderes Auswahl-Widget geändert wird? (Python Panel Pyviz)