Visibility in widgets with default_layout=pn.Row

Hi,
Widgets are individually addressable only if default_layout=pn.Column. Maybe somebody has a workaround?

class CustomExample(param.Parameterized):
    """An example Parameterized class"""

    select_string = param.Selector(objects=["red", "yellow", "green"])
    autocomplete_string = param.Selector(default='', objects=["red", "yellow", "green"], check_on_set=False)
    select_number = param.Selector(objects=[0, 1, 10, 100])

ex = pn.Param(CustomExample.param, widgets={
    'select_string': pn.widgets.RadioButtonGroup,
    'autocomplete_string': pn.widgets.AutocompleteInput,
    'select_number': pn.widgets.DiscretePlayer}, default_layout=pn.Column
)
ex

After declaring “ex” I can make disappear some widgets by executing: ex.layout[3].visible=False
If i set default_layout=pn.Row then ex.layout[3].visible=False will raise " list index out of range"

Hi @RobertoDF

If you print(ex.layout) you will see the row is actually inside a column. So ex.layout[0][3].visible=False will work.

import param
import panel as pn

class CustomExample(param.Parameterized):
    """An example Parameterized class"""

    select_string = param.Selector(objects=["red", "yellow", "green"])
    autocomplete_string = param.Selector(default='', objects=["red", "yellow", "green"], check_on_set=False)
    select_number = param.Selector(objects=[0, 1, 10, 100])

ex = pn.Param(CustomExample.param, widgets={
    'select_string': pn.widgets.RadioButtonGroup,
    'autocomplete_string': pn.widgets.AutocompleteInput,
    'select_number': pn.widgets.DiscretePlayer}, default_layout=pn.Row
)
print(ex.layout)
column = ex.layout[0]
column[3].visible=False
$ python script.py
Column(margin=5, name='CustomExample', width=300)
    [0] Row(margin=5, name='CustomExample', width=300)
        [0] StaticText(value='<b>CustomExample</b>')
        [1] RadioButtonGroup(name='Select string', options=OrderedDict([('red', ...]), value='red')
        [2] AutocompleteInput(name='Autocomplete string', options=['red', 'yellow', ...])
        [3] DiscretePlayer(name='Select number', options=OrderedDict([('0', ...]), value=0, value_throttled=0)
1 Like

Didn’t notice that! Thanks Marc!

1 Like