CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-streamlit

A faster way to build and share data apps

Overview
Eval results
Files

input-widgets.mddocs/

Input Widgets

Interactive widgets for user input including buttons, text inputs, selection widgets, file uploads, and form controls. These widgets enable user interaction and data collection in Streamlit applications.

Capabilities

Button Widgets

Interactive button controls for triggering actions and navigation.

def button(label, key=None, help=None, on_click=None, args=None, kwargs=None, *, type="secondary", disabled=False, use_container_width=False, icon=None):
    """
    Display clickable button that returns True when clicked.

    Args:
        label (str): Button text label
        key (str, optional): Unique widget key for state management
        help (str, optional): Tooltip text
        on_click (callable, optional): Callback function when clicked
        args (tuple, optional): Arguments for on_click callback
        kwargs (dict, optional): Keyword arguments for on_click callback
        type (str): Button style ("primary", "secondary")
        disabled (bool): Whether button is disabled
        use_container_width (bool): Whether to use full container width
        icon (str, optional): Icon name or emoji

    Returns:
        bool: True if button was clicked in this run
    """

def link_button(label, url, *, help=None, disabled=False, use_container_width=False, type="secondary", icon=None):
    """
    Display button that opens external link in new tab.

    Args:
        label (str): Button text label
        url (str): URL to open when clicked
        help (str, optional): Tooltip text
        disabled (bool): Whether button is disabled
        use_container_width (bool): Whether to use full container width
        type (str): Button style ("primary", "secondary")
        icon (str, optional): Icon name or emoji

    Returns:
        bool: True if button was clicked in this run
    """

def download_button(label, data, file_name=None, mime=None, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False, use_container_width=False, type="secondary", icon=None):
    """
    Display button that downloads data as file when clicked.

    Args:
        label (str): Button text label
        data: Data to download (bytes, str, or file-like object)
        file_name (str, optional): Default filename for download
        mime (str, optional): MIME type of the data
        key (str, optional): Unique widget key for state management
        help (str, optional): Tooltip text
        on_click (callable, optional): Callback function when clicked
        args (tuple, optional): Arguments for on_click callback
        kwargs (dict, optional): Keyword arguments for on_click callback
        disabled (bool): Whether button is disabled
        use_container_width (bool): Whether to use full container width
        type (str): Button style ("primary", "secondary")
        icon (str, optional): Icon name or emoji

    Returns:
        bool: True if button was clicked in this run
    """

def page_link(page, *, label=None, icon=None, help=None, disabled=False, use_container_width=False):
    """
    Display button that navigates to another page in multi-page app.

    Args:
        page (str or Page): Page name or Page object to navigate to
        label (str, optional): Button label (uses page title if not provided)
        icon (str, optional): Icon name or emoji
        help (str, optional): Tooltip text
        disabled (bool): Whether button is disabled
        use_container_width (bool): Whether to use full container width

    Returns:
        bool: True if button was clicked in this run
    """

Basic Input Widgets

Simple input controls for boolean and text values.

def checkbox(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility="visible"):
    """
    Display checkbox for boolean input.

    Args:
        label (str): Widget label
        value (bool): Initial/default value
        key (str, optional): Unique widget key for state management
        help (str, optional): Tooltip text
        on_change (callable, optional): Callback when value changes
        args (tuple, optional): Arguments for on_change callback
        kwargs (dict, optional): Keyword arguments for on_change callback
        disabled (bool): Whether widget is disabled
        label_visibility (str): Label visibility ("visible", "hidden", "collapsed")

    Returns:
        bool: Current checkbox state
    """

def toggle(label, value=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility="visible"):
    """
    Display toggle switch for boolean input.

    Args:
        label (str): Widget label
        value (bool): Initial/default value
        key (str, optional): Unique widget key for state management
        help (str, optional): Tooltip text
        on_change (callable, optional): Callback when value changes
        args (tuple, optional): Arguments for on_change callback
        kwargs (dict, optional): Keyword arguments for on_change callback
        disabled (bool): Whether widget is disabled
        label_visibility (str): Label visibility ("visible", "hidden", "collapsed")

    Returns:
        bool: Current toggle state
    """

def feedback(options, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False):
    """
    Display feedback widget with thumbs up/down or custom options.

    Args:
        options (str or dict): Feedback options ("thumbs", "faces", or custom dict)
        key (str, optional): Unique widget key for state management
        help (str, optional): Tooltip text
        on_change (callable, optional): Callback when value changes
        args (tuple, optional): Arguments for on_change callback
        kwargs (dict, optional): Keyword arguments for on_change callback
        disabled (bool): Whether widget is disabled

    Returns:
        dict or None: Selected feedback option
    """

Text Input Widgets

Text input controls for single-line and multi-line text entry.

def text_input(label, value="", max_chars=None, key=None, type="default", help=None, autocomplete=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility="visible"):
    """
    Display single-line text input widget.

    Args:
        label (str): Widget label
        value (str): Initial/default text value
        max_chars (int, optional): Maximum number of characters allowed
        key (str, optional): Unique widget key for state management
        type (str): Input type ("default" or "password")
        help (str, optional): Tooltip text
        autocomplete (str, optional): HTML autocomplete attribute
        on_change (callable, optional): Callback when value changes
        args (tuple, optional): Arguments for on_change callback
        kwargs (dict, optional): Keyword arguments for on_change callback
        placeholder (str, optional): Placeholder text when empty
        disabled (bool): Whether widget is disabled
        label_visibility (str): Label visibility ("visible", "hidden", "collapsed")

    Returns:
        str: Current text input value
    """

def text_area(label, value="", height=None, max_chars=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility="visible"):
    """
    Display multi-line text input widget.

    Args:
        label (str): Widget label
        value (str): Initial/default text value
        height (int, optional): Height in pixels
        max_chars (int, optional): Maximum number of characters allowed
        key (str, optional): Unique widget key for state management
        help (str, optional): Tooltip text
        on_change (callable, optional): Callback when value changes
        args (tuple, optional): Arguments for on_change callback
        kwargs (dict, optional): Keyword arguments for on_change callback
        placeholder (str, optional): Placeholder text when empty
        disabled (bool): Whether widget is disabled
        label_visibility (str): Label visibility ("visible", "hidden", "collapsed")

    Returns:
        str: Current text area value
    """

Number Input Widgets

Numeric input controls with validation and formatting.

def number_input(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder=None, disabled=False, label_visibility="visible"):
    """
    Display number input widget with validation and step controls.

    Args:
        label (str): Widget label
        min_value (float, optional): Minimum allowed value
        max_value (float, optional): Maximum allowed value
        value (float, optional): Initial/default value
        step (float, optional): Step size for increment/decrement
        format (str, optional): Printf-style format string
        key (str, optional): Unique widget key for state management
        help (str, optional): Tooltip text
        on_change (callable, optional): Callback when value changes
        args (tuple, optional): Arguments for on_change callback
        kwargs (dict, optional): Keyword arguments for on_change callback
        placeholder (str, optional): Placeholder text when empty
        disabled (bool): Whether widget is disabled
        label_visibility (str): Label visibility ("visible", "hidden", "collapsed")

    Returns:
        float or int: Current number input value
    """

def slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility="visible"):
    """
    Display slider widget for numeric input with visual feedback.

    Args:
        label (str): Widget label
        min_value (float, optional): Minimum slider value
        max_value (float, optional): Maximum slider value
        value (float or tuple, optional): Initial value or range for range slider
        step (float, optional): Step size between values
        format (str, optional): Printf-style format string for display
        key (str, optional): Unique widget key for state management
        help (str, optional): Tooltip text
        on_change (callable, optional): Callback when value changes
        args (tuple, optional): Arguments for on_change callback
        kwargs (dict, optional): Keyword arguments for on_change callback
        disabled (bool): Whether widget is disabled
        label_visibility (str): Label visibility ("visible", "hidden", "collapsed")

    Returns:
        float or tuple: Current slider value or range
    """

Selection Widgets

Widgets for selecting from predefined options with various interaction modes.

def selectbox(label, options, index=0, format_func=str, key=None, help=None, on_change=None, args=None, kwargs=None, *, placeholder="Choose an option", disabled=False, label_visibility="visible"):
    """
    Display dropdown selectbox for single selection from options.

    Args:
        label (str): Widget label
        options (list): Available options to choose from
        index (int): Index of default selected option
        format_func (callable): Function to format option display
        key (str, optional): Unique widget key for state management
        help (str, optional): Tooltip text
        on_change (callable, optional): Callback when selection changes
        args (tuple, optional): Arguments for on_change callback
        kwargs (dict, optional): Keyword arguments for on_change callback
        placeholder (str): Placeholder text when no selection
        disabled (bool): Whether widget is disabled
        label_visibility (str): Label visibility ("visible", "hidden", "collapsed")

    Returns:
        Any: Currently selected option
    """

def multiselect(label, options, default=None, format_func=str, key=None, help=None, on_change=None, args=None, kwargs=None, *, max_selections=None, placeholder="Choose options", disabled=False, label_visibility="visible"):
    """
    Display multi-selection widget for choosing multiple options.

    Args:
        label (str): Widget label
        options (list): Available options to choose from
        default (list, optional): Default selected options
        format_func (callable): Function to format option display
        key (str, optional): Unique widget key for state management
        help (str, optional): Tooltip text
        on_change (callable, optional): Callback when selection changes
        args (tuple, optional): Arguments for on_change callback
        kwargs (dict, optional): Keyword arguments for on_change callback
        max_selections (int, optional): Maximum number of selections allowed
        placeholder (str): Placeholder text when no selections
        disabled (bool): Whether widget is disabled
        label_visibility (str): Label visibility ("visible", "hidden", "collapsed")

    Returns:
        list: Currently selected options
    """

def radio(label, options, index=0, format_func=str, key=None, help=None, on_change=None, args=None, kwargs=None, *, captions=None, disabled=False, horizontal=False, label_visibility="visible"):
    """
    Display radio buttons for single selection with all options visible.

    Args:
        label (str): Widget label
        options (list): Available options to choose from
        index (int): Index of default selected option
        format_func (callable): Function to format option display
        key (str, optional): Unique widget key for state management
        help (str, optional): Tooltip text
        on_change (callable, optional): Callback when selection changes
        args (tuple, optional): Arguments for on_change callback
        kwargs (dict, optional): Keyword arguments for on_change callback
        captions (list, optional): Caption text for each option
        disabled (bool): Whether widget is disabled
        horizontal (bool): Whether to layout options horizontally
        label_visibility (str): Label visibility ("visible", "hidden", "collapsed")

    Returns:
        Any: Currently selected option
    """

def select_slider(label, options, value=None, format_func=str, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility="visible"):
    """
    Display slider for selecting from discrete options.

    Args:
        label (str): Widget label
        options (list): Available options in order
        value (any or tuple, optional): Initial value or range
        format_func (callable): Function to format option display
        key (str, optional): Unique widget key for state management
        help (str, optional): Tooltip text
        on_change (callable, optional): Callback when selection changes
        args (tuple, optional): Arguments for on_change callback
        kwargs (dict, optional): Keyword arguments for on_change callback
        disabled (bool): Whether widget is disabled
        label_visibility (str): Label visibility ("visible", "hidden", "collapsed")

    Returns:
        Any or tuple: Currently selected option or range
    """

def pills(label, options, selection_mode="single", default=None, format_func=str, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility="visible"):
    """
    Display pill-shaped selection buttons for single or multiple selection.

    Args:
        label (str): Widget label
        options (list): Available options to choose from
        selection_mode (str): Selection mode ("single" or "multi")
        default: Default selected option(s)
        format_func (callable): Function to format option display
        key (str, optional): Unique widget key for state management
        help (str, optional): Tooltip text
        on_change (callable, optional): Callback when selection changes
        args (tuple, optional): Arguments for on_change callback
        kwargs (dict, optional): Keyword arguments for on_change callback
        disabled (bool): Whether widget is disabled
        label_visibility (str): Label visibility ("visible", "hidden", "collapsed")

    Returns:
        Any or list: Currently selected option(s)
    """

def segmented_control(label, options, selection_mode="single", default=None, format_func=str, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility="visible"):
    """
    Display segmented control widget for single or multiple selection.

    Args:
        label (str): Widget label
        options (list): Available options to choose from
        selection_mode (str): Selection mode ("single" or "multi")
        default: Default selected option(s)
        format_func (callable): Function to format option display
        key (str, optional): Unique widget key for state management
        help (str, optional): Tooltip text
        on_change (callable, optional): Callback when selection changes
        args (tuple, optional): Arguments for on_change callback
        kwargs (dict, optional): Keyword arguments for on_change callback
        disabled (bool): Whether widget is disabled
        label_visibility (str): Label visibility ("visible", "hidden", "collapsed")

    Returns:
        Any or list: Currently selected option(s)
    """

Date and Time Input

Specialized input widgets for temporal data.

def date_input(label, value=None, min_value=None, max_value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, format="YYYY/MM/DD", disabled=False, label_visibility="visible"):
    """
    Display date picker widget for date selection.

    Args:
        label (str): Widget label
        value (datetime.date, optional): Initial date value
        min_value (datetime.date, optional): Minimum selectable date
        max_value (datetime.date, optional): Maximum selectable date
        key (str, optional): Unique widget key for state management
        help (str, optional): Tooltip text
        on_change (callable, optional): Callback when date changes
        args (tuple, optional): Arguments for on_change callback
        kwargs (dict, optional): Keyword arguments for on_change callback
        format (str): Date format for display
        disabled (bool): Whether widget is disabled
        label_visibility (str): Label visibility ("visible", "hidden", "collapsed")

    Returns:
        datetime.date: Selected date
    """

def time_input(label, value=None, key=None, help=None, on_change=None, args=None, kwargs=None, *, step=900, disabled=False, label_visibility="visible"):
    """
    Display time picker widget for time selection.

    Args:
        label (str): Widget label
        value (datetime.time, optional): Initial time value
        key (str, optional): Unique widget key for state management
        help (str, optional): Tooltip text
        on_change (callable, optional): Callback when time changes
        args (tuple, optional): Arguments for on_change callback
        kwargs (dict, optional): Keyword arguments for on_change callback
        step (int): Step size in seconds (default 15 minutes)
        disabled (bool): Whether widget is disabled
        label_visibility (str): Label visibility ("visible", "hidden", "collapsed")

    Returns:
        datetime.time: Selected time
    """

File and Media Input

Widgets for uploading files and capturing media input.

def file_uploader(label, type=None, accept_multiple_files=False, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility="visible"):
    """
    Display file uploader widget for file selection and upload.

    Args:
        label (str): Widget label
        type (str or list, optional): Accepted file extensions
        accept_multiple_files (bool): Whether to allow multiple file selection
        key (str, optional): Unique widget key for state management
        help (str, optional): Tooltip text
        on_change (callable, optional): Callback when files are uploaded
        args (tuple, optional): Arguments for on_change callback
        kwargs (dict, optional): Keyword arguments for on_change callback
        disabled (bool): Whether widget is disabled
        label_visibility (str): Label visibility ("visible", "hidden", "collapsed")

    Returns:
        UploadedFile or list or None: Uploaded file(s) or None if no upload
    """

def camera_input(label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility="visible"):
    """
    Display camera input widget for taking photos.

    Args:
        label (str): Widget label
        key (str, optional): Unique widget key for state management
        help (str, optional): Tooltip text
        on_change (callable, optional): Callback when photo is taken
        args (tuple, optional): Arguments for on_change callback
        kwargs (dict, optional): Keyword arguments for on_change callback
        disabled (bool): Whether widget is disabled
        label_visibility (str): Label visibility ("visible", "hidden", "collapsed")

    Returns:
        UploadedFile or None: Captured image or None if no photo taken
    """

def audio_input(label, key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility="visible", max_duration=None):
    """
    Display audio input widget for recording audio.

    Args:
        label (str): Widget label
        key (str, optional): Unique widget key for state management
        help (str, optional): Tooltip text
        on_change (callable, optional): Callback when audio is recorded
        args (tuple, optional): Arguments for on_change callback
        kwargs (dict, optional): Keyword arguments for on_change callback
        disabled (bool): Whether widget is disabled
        label_visibility (str): Label visibility ("visible", "hidden", "collapsed")
        max_duration (int, optional): Maximum recording duration in seconds

    Returns:
        UploadedFile or None: Recorded audio or None if no recording
    """

Color Input

Widget for color selection with visual color picker.

def color_picker(label, value="#000000", key=None, help=None, on_change=None, args=None, kwargs=None, *, disabled=False, label_visibility="visible"):
    """
    Display color picker widget for color selection.

    Args:
        label (str): Widget label
        value (str): Initial color value as hex string
        key (str, optional): Unique widget key for state management
        help (str, optional): Tooltip text
        on_change (callable, optional): Callback when color changes
        args (tuple, optional): Arguments for on_change callback
        kwargs (dict, optional): Keyword arguments for on_change callback
        disabled (bool): Whether widget is disabled
        label_visibility (str): Label visibility ("visible", "hidden", "collapsed")

    Returns:
        str: Selected color as hex string
    """

Form Controls

Special widgets for form submission and organization.

def form(key, *, clear_on_submit=False, border=True):
    """
    Create form container that batches widget interactions until submit.

    Args:
        key (str): Unique form identifier
        clear_on_submit (bool): Whether to clear form values on submit
        border (bool): Whether to show form border

    Returns:
        DeltaGenerator: Form container context manager
    """

def form_submit_button(label, key=None, help=None, on_click=None, args=None, kwargs=None, *, disabled=False, use_container_width=False, type="secondary", icon=None):
    """
    Display form submit button that triggers form submission.

    Args:
        label (str): Button text label
        key (str, optional): Unique widget key for state management
        help (str, optional): Tooltip text
        on_click (callable, optional): Callback function when clicked
        args (tuple, optional): Arguments for on_click callback
        kwargs (dict, optional): Keyword arguments for on_click callback
        disabled (bool): Whether button is disabled
        use_container_width (bool): Whether to use full container width
        type (str): Button style ("primary", "secondary")
        icon (str, optional): Icon name or emoji

    Returns:
        bool: True if form was submitted in this run
    """

Install with Tessl CLI

npx tessl i tessl/pypi-streamlit

docs

advanced-features.md

caching-performance.md

components-config.md

display-elements.md

index.md

input-widgets.md

layout-containers.md

navigation-pages.md

state-management.md

user-auth.md

tile.json