Skip to content

Text

marimo.ui.text

text(
    value: str = "",
    placeholder: str = "",
    kind: Literal[
        "text", "password", "email", "url"
    ] = "text",
    max_length: Optional[int] = None,
    disabled: bool = False,
    debounce: bool | int = True,
    *,
    label: str = "",
    on_change: Optional[Callable[[str], None]] = None,
    full_width: bool = False
)

Bases: UIElement[str, str]

A text input.

Examples:

text = mo.ui.text(value="Hello, World!")
ATTRIBUTE DESCRIPTION
value

A string of the input's contents.

TYPE: str

PARAMETER DESCRIPTION
value

Default value of text box. Defaults to "".

TYPE: str DEFAULT: ''

placeholder

Placeholder text to display when the text area is empty. Defaults to "".

TYPE: str DEFAULT: ''

kind

Input kind. Defaults to "text".

TYPE: Literal['text', 'password', 'email', 'url'] DEFAULT: 'text'

max_length

Maximum length of input. Defaults to None.

TYPE: int DEFAULT: None

disabled

Whether the input is disabled. Defaults to False.

TYPE: bool DEFAULT: False

debounce

Whether the input is debounced. If number, debounce by that many milliseconds. If True, then value is only emitted on Enter or when the input loses focus. Defaults to True.

TYPE: bool | int DEFAULT: True

label

Markdown label for the element. Defaults to "".

TYPE: str DEFAULT: ''

on_change

Optional callback to run when this element's value changes. Defaults to None.

TYPE: Callable[[str], None] DEFAULT: None

full_width

Whether the input should take up the full width of its container. Defaults to False.

TYPE: bool DEFAULT: False

text property

text: str

A string of HTML representing this element.

value property writable

value: T

The element's current value.

batch

batch(**elements: UIElement[JSONType, object]) -> batch

Convert an HTML object with templated text into a UI element.

This method lets you create custom UI elements that are represented by arbitrary HTML.

Example.

user_info = mo.md(
    '''
    - What's your name?: {name}
    - When were you born?: {birthday}
    '''
).batch(name=mo.ui.text(), birthday=mo.ui.date())

In this example, user_info is a UI Element whose output is markdown and whose value is a dict with keys 'name' and 'birthday' (and values equal to the values of their corresponding elements).

Args.

  • elements: the UI elements to interpolate into the HTML template.

callout

callout(
    kind: Literal[
        "neutral", "danger", "warn", "success", "info"
    ] = "neutral"
) -> Html

Create a callout containing this HTML element.

A callout wraps your HTML element in a raised box, emphasizing its importance. You can style the callout for different situations with the kind argument.

Examples.

mo.md("Hooray, you did it!").callout(kind="success")
mo.md("It's dangerous to go alone!").callout(kind="warn")

center

center() -> Html

Center an item.

Example.

mo.md("# Hello, world").center()

Returns.

An Html object.

form

form(
    label: str = "",
    *,
    bordered: bool = True,
    loading: bool = False,
    submit_button_label: str = "Submit",
    submit_button_tooltip: Optional[str] = None,
    submit_button_disabled: bool = False,
    clear_on_submit: bool = False,
    show_clear_button: bool = False,
    clear_button_label: str = "Clear",
    clear_button_tooltip: Optional[str] = None,
    validate: Optional[
        Callable[[Optional[JSONType]], Optional[str]]
    ] = None,
    on_change: Optional[
        Callable[[Optional[T]], None]
    ] = None
) -> form[S, T]

Create a submittable form out of this UIElement.

Use this method to create a form that gates the submission of a UIElements value until a submit button is clicked.

The value of the form is the value of the underlying element the last time the form was submitted.

Examples.

Convert any UIElement into a form:

prompt = mo.ui.text_area().form()

Combine with HTML.batch to create a form made out of multiple UIElements:

form = (
    mo.ui.md(
        '''
    **Enter your prompt.**

    {prompt}

    **Choose a random seed.**

    {seed}
    '''
    )
    .batch(
        prompt=mo.ui.text_area(),
        seed=mo.ui.number(),
    )
    .form()
)

Args.

  • label: A text label for the form.
  • bordered: whether the form should have a border
  • loading: whether the form should be in a loading state
  • submit_button_label: the label of the submit button
  • submit_button_tooltip: the tooltip of the submit button
  • submit_button_disabled: whether the submit button should be disabled
  • clear_on_submit: whether the form should clear its contents after submitting
  • show_clear_button: whether the form should show a clear button
  • clear_button_label: the label of the clear button
  • clear_button_tooltip: the tooltip of the clear button
  • validate: a function that takes the form's value and returns an error message if the value is invalid, or None if the value is valid

left

left() -> Html

Left-justify.

Example.

mo.md("# Hello, world").left()

Returns.

An Html object.

right

right() -> Html

Right-justify.

Example.

mo.md("# Hello, world").right()

Returns.

An Html object.

send_message

send_message(
    message: Dict[str, object],
    buffers: Optional[Sequence[bytes]],
) -> None

Send a message to the element rendered on the frontend from the backend.

style

style(
    style: Optional[dict[str, Any]] = None, **kwargs: Any
) -> Html

Wrap an object in a styled container.

Example.

mo.md("...").style({"max-height": "300px", "overflow": "auto"})
mo.md("...").style(max_height="300px", overflow="auto")

Args.

  • style: an optional dict of CSS styles, keyed by property name
  • **kwargs: CSS styles as keyword arguments