Skip to main content

A simple clickable list component for streamlit

Project description

streamlit-clickable-list

See demo: https://demopy-esoz75md8bttxnf4zvk9wa.streamlit.app/

How to install

pip install streamlit-clickable-list

How to use

col1, col2 = st.columns([1, 1])
with col1:
  def on_click(name: str) -> None:
    print(f"clicked: {name}")
    st.session_state['clicked'] = name

  st.header("Clickable list:")
  clickable_list(["aaa", "bbb", "ccc"], on_click, key="clickable_list")

with col2:
  st.header("Result:")
  if "clicked" in st.session_state:
    st.write(f"Clicked: {st.session_state['clicked'] or 'none'}")

streamlit-clickable-list_demo

For the component development

Based on: https://docs.streamlit.io/develop/concepts/custom-components/intro

Set up

  • Set up python environment and dependencies
    • Used: v3.9
    • If you use uv, run:
      uv sync
      
  • Set up Node.js environment
    • Used v22.13.1
    • If you use nvm, run:
      nvm use
      
  • Set up node_modules
    cd frontend
    npm install
    

Run dev

  • Use dev mode
    • Edit streamlit_clickable_list/__init__.py
      -_RELEASE = True
      +_RELEASE = False
      
  • Run dev server
    cd frontend
    npm start
    
    • Then, a server will be run in port=3001
  • Run streamlit app
    streamlit run sample.py
    
    # with WSL + uv
    uv run streamlit run sample.py --server.fileWatcherType=poll --server.address=0.0.0.0
    
    • Then, see localhost:8501 in your browser

Develop demo/demo.py

  • Make symbolic link
    ln -s demo/demo.py ./
    
    • demo/demo.py use streamlit-clickable-list from PyPI. The symbolic link allow it to use local component code
  • Run streamlit app
    streamlit run demo.py
    
    # with WSL + uv
    uv run streamlit run demo.py --server.fileWatcherType=poll --server.address=0.0.0.0
    
    • Then, see localhost:8501 in your browser
  • Edit demo/demo.py

Release to PyPI

  • Use release mode
    • Edit streamlit_clickable_list/__init__.py
      -_RELEASE = False
      +_RELEASE = True
      
  • Build react app
    cd frontend
    npm build
    
  • Run the app to check it in local
    streamlit run sample.py
    
    # with WSL + uv
    uv run streamlit run sample.py --server.fileWatcherType=poll --server.address=0.0.0.0
    
  • Update version
    • Edit pyproject.toml to change version
      [project]
      name = "streamlit-clickable-list"
      -version = "X.Y.Z"
      +version = "X.Y.W"
      
  • Build python
    • If you use uv, run:
      rm dist/streamlit_clickable_list-*
      uv build
      
  • Push to GitHub (if you update README.md)
    git push origin main
    
  • Publish to PyPI
    uv publish --token <PyPI token>
    
    • Check $HOME/.pypirc for <PyPI token>

Release to Streamlit Community Cloud

Only the first time:

To publish:

  • First, publish it to PyPI
    • Because the app in Streamlit Community Cloud uses the streamlit-clickable-list in PyPI
  • Add new packege in requirement.txt if needed
    • Do NOT use uv pip compile pyproject.toml > requirements.txt
      • The demo app in Streamlit Community Cloud needs streamlit-clickable-list package from pypi, though the package from pypi is not necessary to develop the component
  • Push github, then it will be deployed to Streamlit Community Cloud
    git push origin main
    

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

streamlit_clickable_list-0.1.3.tar.gz (405.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

streamlit_clickable_list-0.1.3-py3-none-any.whl (408.4 kB view details)

Uploaded Python 3

File details

Details for the file streamlit_clickable_list-0.1.3.tar.gz.

File metadata

File hashes

Hashes for streamlit_clickable_list-0.1.3.tar.gz
Algorithm Hash digest
SHA256 c2a8ed62fb8da3cf9de44496ff9c705a8397aa18e6dc96ce1945c70e0459edeb
MD5 e9f24cf1db53f230cb5dd83f640362d8
BLAKE2b-256 fd6bab57a92490e203f92790dc4470e8b0458596eef22e1ea2787d015e1b8303

See more details on using hashes here.

File details

Details for the file streamlit_clickable_list-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for streamlit_clickable_list-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 00ce23a2bade0cb507a1cd0d4d331e82c61ba249d22284c77ca12cf4e2d3722e
MD5 ded3d210095558e894e1bd5833ba5877
BLAKE2b-256 2f362113247ab8bee3199ba2947fd9d3df7ab4fd070f28e1905e0dcaa8dd9ed5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page