This doesn’t work with param.Parameterized
objects to select. I get a lower level ValueError on row options (see below). Any idea what I’m doing wrong?
import param
import panel as pn
pn.extension()
class A(param.Parameterized):
val = param.Integer()
class ObjSelect(param.Parameterized):
a=A()
rooms = param.ObjectSelector(default=a, objects=[a])
action = param.Action(lambda self: self.update_obj_list(), label='Update')
i = param.Integer(2, precedence=-2)
def update_obj_list(self):
print("update")
l = self.param.rooms.objects.copy()
new_obj = A()
l.append(new_obj)
self.param.rooms.objects = l
print(id(self.param.rooms.objects))
self.rooms = new_obj
self.i += 1
print("updated")
o = ObjSelect()
pn.Param(o)
This throws an error when I try to update_obj_list.
Traceback (most recent call last):
File "<myrootdir>\lib\site-packages\pyviz_comms\__init__.py", line 325, in _handle_msg
self._on_msg(msg)
File "<myrootdir>\lib\site-packages\panel\viewable.py", line 272, in _on_msg
patch.apply_to_document(doc, comm.id)
File "<myrootdir>\lib\site-packages\bokeh\protocol\messages\patch_doc.py", line 100, in apply_to_document
doc._with_self_as_curdoc(lambda: doc.apply_json_patch(self.content, setter))
File "<myrootdir>\lib\site-packages\bokeh\document\document.py", line 1198, in _with_self_as_curdoc
return f()
File "<myrootdir>\lib\site-packages\bokeh\protocol\messages\patch_doc.py", line 100, in <lambda>
doc._with_self_as_curdoc(lambda: doc.apply_json_patch(self.content, setter))
File "<myrootdir>\lib\site-packages\bokeh\document\document.py", line 398, in apply_json_patch
self._trigger_on_message(event_json["msg_type"], event_json["msg_data"])
File "<myrootdir>\lib\site-packages\bokeh\document\document.py", line 687, in _trigger_on_message
cb(msg_data)
File "<myrootdir>\lib\site-packages\bokeh\document\document.py", line 356, in apply_json_event
model._trigger_event(event)
File "<myrootdir>\lib\site-packages\bokeh\util\callback_manager.py", line 91, in _trigger_event
self._document._with_self_as_curdoc(invoke)
File "<myrootdir>\lib\site-packages\bokeh\document\document.py", line 1198, in _with_self_as_curdoc
return f()
File "<myrootdir>\lib\site-packages\bokeh\util\callback_manager.py", line 80, in invoke
callback(event)
File "<myrootdir>\lib\site-packages\panel\widgets\button.py", line 119, in _server_click
self._change_event(doc)
File "<myrootdir>\lib\site-packages\panel\reactive.py", line 288, in _change_event
self._process_events(events)
File "<myrootdir>\lib\site-packages\panel\reactive.py", line 262, in _process_events
self.param.set_param(**self_events)
File "<myrootdir>\lib\site-packages\param\parameterized.py", line 1526, in set_param
self_._batch_call_watchers()
File "<myrootdir>\lib\site-packages\param\parameterized.py", line 1665, in _batch_call_watchers
self_._execute_watcher(watcher, events)
File "<myrootdir>\lib\site-packages\param\parameterized.py", line 1627, in _execute_watcher
watcher.fn(*args, **kwargs)
File "<myrootdir>\lib\site-packages\panel\param.py", line 448, in action
value(self.object)
File "C:\Users\MATS~1.VAN\AppData\Local\Temp/ipykernel_3568/2570219891.py", line 7, in <lambda>
action = param.Action(lambda self: self.update_obj_list(), label='Update')
File "C:\Users\MATS~1.VAN\AppData\Local\Temp/ipykernel_3568/2570219891.py", line 15, in update_obj_list
self.param.rooms.objects = l
File "<myrootdir>\lib\site-packages\param\parameterized.py", line 876, in __setattr__
self.owner.param._call_watcher(watcher, event)
File "<myrootdir>\lib\site-packages\param\parameterized.py", line 1645, in _call_watcher
self_._execute_watcher(watcher, (event,))
File "<myrootdir>\lib\site-packages\param\parameterized.py", line 1627, in _execute_watcher
watcher.fn(*args, **kwargs)
File "<myrootdir>\lib\site-packages\panel\param.py", line 522, in link
widget.param.set_param(**updates)
File "<myrootdir>\lib\site-packages\param\parameterized.py", line 1517, in set_param
raise ValueError("'%s' is not a parameter of %s" % (k, self_or_cls.name))
ValueError: 'options' is not a parameter of Row04803