Is there a better way to override the default value formatting for numeric panel input widgets?
import numbers
from bokeh.models.formatters import NumeralTickFormatter
import param as pm
import panel as pn
pn.extension()
class A(pm.Parameterized):
a = pm.Number(1000000, step=10000)
b = pm.Number(100000, step=1000)
c = pm.Number(10, step=1, bounds=(-100,100))
d = pm.Magnitude(0.5)
def widgets(self):
number_params = [k for k,v in self.param.values().items() if isinstance(v, numbers.Number) and v > 100]
number_format = {"format": NumeralTickFormatter(format="‘0,0’")}
widgets={a: number_format for a in number_params}
return widgets
a = A()
pn.Param(a, widgets=a.widgets())
For anyone interested I created a Parameterized baseclass that offers the formatting method that I proposed and additionally auto generates the step value for numeric parameters to be about 1% of their bounds range if they have bounds, or 1% of their default value if they don’t have bounds.