• Stars
    star
    213
  • Rank 184,375 (Top 4 %)
  • Language
    Python
  • License
    MIT License
  • Created over 2 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Streamlit searchbox that dynamically updates and provides a list of suggestions based on a provided function

streamlit-searchbox


A streamlit custom component providing a searchbox with autocomplete.

Example

Installation

pip install streamlit-searchbox

Overview

Create a searchbox component and pass a search_function that accepts a str searchterm. The searchbox is triggered on user input, calls the search function for new options and redraws the page via st.experimental_rerun().

You can either pass a list of arguments, e.g.

import wikipedia
from streamlit_searchbox import st_searchbox

# function with list of labels
def search_wikipedia(searchterm: str) -> List[any]:
    return wikipedia.search(searchterm) if searchterm else []


# pass search function to searchbox
selected_value = st_searchbox(
    search_wikipedia,
    key="wiki_searchbox",
)

This example will call the Wikipedia Api to reload suggestions. The selected_value will be one of the items the search_wikipedia function returns, the suggestions shown in the UI components are a str representation. In case you want to provide custom text for suggestions, pass a Tuple.

def search(searchterm: str) -> List[Tuple[str, any]]:
    ...

Usage

To customize the searchbox you can pass the following arguments:

search_function: Callable[[str], List[any]]

Function that will be called on user input

placeholder: str = "Search ..."

Placeholder for empty searches shown within the component.

label: str = None

Label shown above the component.

default: any = None

Default return value in case nothing was submitted or the searchbox cleared.

default_options: list[str] | None = None

Default options that will be shown when first clicking on the searchbox.

clear_on_submit: bool = False

Automatically clear the input after selection.

rerun_on_update: bool = True

Use st.experimental_rerun() to reload the app after user input and load new search suggestions. Disabling leads to delay in showing the proper search results.

key: str = "searchbox"

Streamlit key for unique component identification.

Example

An example Streamlit app can be found here