A faster way to build and share data apps
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.
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
"""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 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
"""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
"""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)
"""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
"""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
"""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
"""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