Python 中的面板 - 如何设置调用事件的顺序
Panel in Python - How to set the order that events are called
我正在使用面板构建一个仪表板,并试图弄清楚如何更改控件(下面 class 中的“阈值”)触发更新 [=15] 属性的进程=] 在调用将使用该属性的任何其他函数之前。基本上,阈值小部件的更改应该更改一个属性 self.table,然后不止 1 个函数将引用它来为仪表板创建表格和绘图。如何做到这一点?这是 class 的开始,其中声明了小部件并且 class 已初始化....
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)
这是一个示例,其中参数阈值发生变化,布尔值发生变化,并且由于该布尔值发生变化,其他更新在此之后被触发:
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)
以下是使用相同机制的其他一些问题和答案:
我正在使用面板构建一个仪表板,并试图弄清楚如何更改控件(下面 class 中的“阈值”)触发更新 [=15] 属性的进程=] 在调用将使用该属性的任何其他函数之前。基本上,阈值小部件的更改应该更改一个属性 self.table,然后不止 1 个函数将引用它来为仪表板创建表格和绘图。如何做到这一点?这是 class 的开始,其中声明了小部件并且 class 已初始化....
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)
这是一个示例,其中参数阈值发生变化,布尔值发生变化,并且由于该布尔值发生变化,其他更新在此之后被触发:
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)
以下是使用相同机制的其他一些问题和答案: