Pythonのパネル-イベントが呼び出される順序を設定する方法

Jan 09 2021

パネルを使用してダッシュボードを作成し、コントロール(以下のクラスの「しきい値」)を変更して、その属性を使用する他の関数が呼び出される前に、クラスの属性を更新するプロセスを起動する方法を理解しようとしています。 。基本的に、しきい値ウィジェットを変更すると、属性self.tableが変更され、複数の関数がそれを参照してダッシュボードのテーブルとプロットを作成します。これを実現する方法は?これは、ウィジェットが宣言され、クラスが初期化されるクラスの開始です。

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)

回答

1 SandervandenOord Jan 10 2021 at 04:14

これは、パラメーターのしきい値を変更すると、ブール値が変更され、そのブール値が変更されるため、その後に他の更新がトリガーされる例です。

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)

同じメカニズムを使用した他のいくつかの質問と回答を次に示します。

ボタンを使用して、パラメータ化されたクラスのパネルでアクションをトリガーし、ボタンアクションが終了したら、別の依存関係を更新します(Holoviz)

別の選択ウィジェットが変更されたときにドロップダウン選択ウィジェットを自動的に更新するにはどうすればよいですか?(Pythonパネルpyviz)