Panel dengan Python - Bagaimana mengatur urutan pemanggilan event
Saya membangun dasbor menggunakan panel dan mencoba mencari cara untuk mengubah kontrol ("ambang" di kelas di bawah) mengaktifkan proses yang memperbarui atribut kelas sebelum fungsi lain dipanggil yang akan menggunakan atribut itu . Pada dasarnya, perubahan widget ambang harus mengubah atribut self.table dan lebih dari 1 fungsi akan mereferensikannya untuk membuat tabel dan plot untuk dasbor. Bagaimana membuat ini terjadi? Ini adalah awal kelas di mana widget dideklarasikan dan kelas diinisialisasi ....
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)
Jawaban
Berikut adalah contoh di mana perubahan ambang parameter, mengubah nilai boolean, dan karena boolean itu berubah, pembaruan lain dipicu setelah itu:
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)
Berikut beberapa pertanyaan + jawaban lain menggunakan mekanisme yang sama:
Gunakan tombol untuk memicu tindakan di Panel dengan Kelas Parameter dan saat tindakan tombol selesai, perbarui dependensi lain (Holoviz)
Bagaimana cara memperbarui widget pilihan dropdown secara otomatis ketika widget pilihan lain diubah? (Panel Python pyviz)