แผงใน Python - วิธีตั้งค่าลำดับที่เรียกเหตุการณ์

Jan 09 2021

ฉันกำลังสร้างแดชบอร์ดโดยใช้พาเนลและพยายามหาวิธีเปลี่ยนแปลงตัวควบคุม ("threshold" ในคลาสด้านล่าง) เริ่มกระบวนการที่อัปเดตแอตทริบิวต์ของคลาสก่อนที่ฟังก์ชันอื่น ๆ จะถูกเรียกใช้ซึ่งจะใช้แอ็ตทริบิวต์นั้น . โดยทั่วไปการเปลี่ยนแปลงในวิดเจ็ต threshold ควรเปลี่ยนแอตทริบิวต์ self.table จากนั้นฟังก์ชันมากกว่า 1 ฟังก์ชันจะอ้างอิงเพื่อสร้างตารางและพล็อตสำหรับแดชบอร์ด จะทำให้สิ่งนี้เกิดขึ้นได้อย่างไร? นี่คือจุดเริ่มต้นของคลาสที่มีการประกาศวิดเจ็ตและคลาสเริ่มต้น ...

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)