Bảng điều khiển trong Python - Cách đặt thứ tự các sự kiện được gọi

Jan 09 2021

Tôi đang xây dựng trang tổng quan bằng cách sử dụng bảng điều khiển và cố gắng tìm cách thay đổi điều khiển ("ngưỡng" trong lớp bên dưới) kích hoạt quy trình cập nhật một thuộc tính của lớp trước khi bất kỳ hàm nào khác được gọi sẽ sử dụng thuộc tính đó . Về cơ bản, một thay đổi trong tiện ích ngưỡng sẽ thay đổi một thuộc tính self.table và sau đó nhiều hơn 1 hàm sẽ tham chiếu đến nó để tạo bảng và biểu đồ cho trang tổng quan. Làm thế nào để làm cho điều này xảy ra? Đây là phần bắt đầu của lớp nơi các widget được khai báo và lớp được khởi tạo ....

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)

Trả lời

1 SandervandenOord Jan 10 2021 at 04:14

Dưới đây là một ví dụ trong đó sự thay đổi trong ngưỡng tham số, thay đổi giá trị của boolean và bởi vì boolean đó thay đổi, các cập nhật khác sẽ được kích hoạt sau đó:

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)

Dưới đây là một số câu hỏi + câu trả lời khác sử dụng cơ chế tương tự:

Sử dụng nút để kích hoạt hành động trong Bảng điều khiển với Lớp tham số và khi hành động nút kết thúc, có một phần phụ thuộc khác được cập nhật (Holoviz)

Làm cách nào để tự động cập nhật tiện ích lựa chọn thả xuống khi một tiện ích lựa chọn khác bị thay đổi? (Bảng điều khiển Python pyviz)