Painel em Python - como definir a ordem em que os eventos são chamados

Jan 09 2021

Estou construindo um painel usando o painel e tentando descobrir como fazer uma mudança de um controle ("limite" na classe abaixo) disparar um processo que atualiza um atributo da classe antes que qualquer outra função seja chamada para usar esse atributo . Basicamente, uma mudança no widget de limite deve alterar um atributo self.table e, em seguida, mais de 1 função fará referência a ele para criar tabelas e gráficos para o painel. Como fazer isso acontecer? Este é o início da classe onde os widgets são declarados e a classe inicializada ....

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)

Respostas

1 SandervandenOord Jan 10 2021 at 04:14

Aqui está um exemplo em que uma mudança no limite de um parâmetro altera o valor de um booleano e, como esse booleano muda, outras atualizações são acionadas depois disso:

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)

Aqui estão algumas outras perguntas + respostas usando o mesmo mecanismo:

Use o botão para acionar a ação no painel com classe parametrizada e quando a ação do botão for concluída, tenha outra dependência atualizada (Holoviz)

Como atualizo automaticamente um widget de seleção suspenso quando outro widget de seleção é alterado? (Painel Python pyviz)