How to map param.String to pn.widgets.AutoCompleteInput?

Or other widgets

class BaseClass(param.Parameterized):
    string_value            = param.String(default="str", doc="A string")

pn.Row(BaseClass())

I tried doing this:

class BaseClass(param.Parameterized):
    string_value = param.ObjectSelector(default='China', objects=['China', 'Thailand', 'Japan'])

pn.Param(
    BaseClass.param, widgets={
        'string_value': pn.widgets.AutocompleteInput,
    }
)

But


~/anaconda3/lib/python3.7/site-packages/param/__init__.py in _validate(self, val)
   1374 
   1375         if not isinstance(val, list):
-> 1376             raise ValueError("List '%s' must be a list."%(self.name))
   1377 
   1378         if self.bounds is not None:

ValueError: List 'options' must be a list.

Hi @ahuang11

I tried to develop a working version but could not either. I’ve filed a bug here https://github.com/holoviz/panel/issues/1460

See my comment on https://github.com/holoviz/panel/issues/1460

without modifying panel this should work

OBJECTS = ["China", "Thailand", "Japan"]

class App(param.Parameterized):
    string_value = param.String(default="China")

app = App()
pn.Column(
    pn.Param(app, widgets={"string_value": {"type": pn.widgets.AutocompleteInput, "options": OBJECTS}}), height=500
)
2 Likes