Download this notebook from GitHub (right-click to download).

import panel as pn

The LiteralInput widget allows entering any Python literal using a text entry box whose contents are then parsed in Python. The widget only supports Python literal types. Optionally a type may be declared to validate the literal before updating the parameter.

For more information about listening to widget events and laying out widgets refer to the widgets user guide. Alternatively you can learn how to build GUIs by declaring parameters independently of any specific widgets in the param user guide. To express interactivity entirely using Javascript without the need for a Python server take a look at the links user guide.


For layout and styling related parameters see the customization user guide.


  • serializer (str[‘ast’, ‘json]): The serialization (and deserialization) method to use. ‘ast’ uses ast.literal_eval and ‘json’ uses json.loads and json.dumps.

  • type (type or tuple(type)): A Python literal type (e.g. list, dict, set, int, float, bool, str)

  • value: Parsed value of the indicated type


  • disabled (boolean): Whether the widget is editable

  • name (str): The title of the widget

  • placeholder (str): A placeholder string displayed when no value is entered

literal_input = pn.widgets.LiteralInput(name='Literal Input (dict)', value={'key': [1, 2, 3]}, type=dict)

LiteralInput.value returns a value of the evaluated type that can be read out and set like other widgets:

{'key': [1, 2, 3]}


The LiteralInput widget exposes a number of options which can be changed from both Python and Javascript. Try out the effect of these parameters interactively:

pn.Row(literal_input.controls(jslink=True), literal_input)
This web page was generated from a Jupyter notebook and not all interactivity will work on this website. Right click to download and run locally for full Python-backed interactivity.

Download this notebook from GitHub (right-click to download).