Skip to main content

Streamlit Button Group Component

This is a custom Streamlit button group component that allows you to create groups of buttons with various options and styles.

Installation

  1. Install the required dependencies with pip install st-btn-group.

Usage

First, import the st_btn_group function from the st_btn_group package:

from st_btn_group import st_btn_group

Then, use the st_btn_group function to create a button group:

st_btn_group(
    buttons=[{"label": "Button 1", "value": "1"}, {"label": "Button 2", "value": "2"}],   
)    

Parameters

The st_btn_group function accepts the following parameters:

  • mode: The mode of the buttons. The input must be a string. Possible values are default, checkbox, radio.

    • If default, the buttons will behave like normal buttons.

    • If checkbox, the buttons will behave like checkboxes. The value of the button will be returned as a list of values when the button is clicked.

    • If radio, the buttons will behave like radio buttons. The value of the button will be returned as a single value when the button is clicked. The button will keep a selected state when clicked. To unselect the button, click on it again.

  • buttons: A list of dictionaries containing the buttons to be displayed in the group. Each dictionary must contain a label and a value key. The label key is used to display the button's label, while the value key is used to identify the button when it is clicked. The value key can be anything.

    • Possible parameters (keys of the dictionary) for each button are:

      • label: The label of the button. This is the only required parameter. HTMLS tags are allowed. FontAwesome Icons will be display if integrated over html tags. For example, <i class="fas fa-home"></i> Home.

      • value: The value of the button. This is the value that will be returned when the button is clicked. If not specified, the label value will be used.

      • style: The style of the button. The input must be a dictionary like this one {"color": "red", "font-size": "20px"}

      • disabled: Whether the button is disabled or not. The input must be a boolean.

      • onClick: A JavaScript Function as string that will be executed when the button is clicked. For example, onClick="alert("clicked")".

      • startEnhancer: A string that will be displayed before the button's label. For example, startEnhancer="<i class="fas fa-home"></i>".

      • endEnhancer: A string that will be displayed after the button's label. For example, endEnhancer="<i class="fas fa-home"></i>".

      • download_file: Functionality to download a file directly when the button gets clicked without a callback to Streamlit. The input must be a dictionary like this one {"filename": "file.xlsx", "data": base64 data, "mime_type": "mime Typ" (optional)}. The mime_type is optional and will be guess using the file extension of the filename. The data must be base64 encoded. You can use the base64 library to encode your data. For example, base64.b64encode(data.encode()).decode().

  • Example:

st_btn_group(
    buttons=[
        {
            "label": "Button 1",
            "value": "1",
            "style": {"color": "red", "font-size": "20px"},
            "disabled": True,
            "onClick": "alert('clicked')",
            "startEnhancer": "<i class='fas fa-home'></i>",
            "endEnhancer": "<i class='fas fa-home'></i>",
            "download_file": {
                "filename": "file.xlsx",
                "data": base64.b64encode(data.encode()).decode(),
                "mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            },
        },
        {"label": "Button 2", "value": "2"},
    ],
)
  • return_value: Whether the value of the button should be returned when the button is clicked. The input must be a boolean. If False, the button will not return any value when clicked. And Streamlit will not trigger a rerun when the button is clicked!

  • shape: The shape of the buttons. The input must be a string. Possible values are default, round, pill, circle.

  • size: The size of the buttons. The input must be a string. Possible values are default, large, compact, mini

  • group_style: The style of the button group. The input must be a dictionary like this one {"display": "flex", "justify-content": "center"}.

  • disabled: Whether the button group is disabled or not. The input must be a boolean.

  • theme: The theme of the buttons. The input must be a string. Possible values are light and dark.

  • align: The alignment of the button group in streamlit. Possible values are left, center, right.

  • height: The height of the button group in streamlit. Must be adjusted if the buttons are cutoff.

  • key: An optional string to use as the unique key for the widget. If this is omitted, a key will be generated for the widget based on its content. Multiple widgets of the same type may not share the same key.

  • custom_fontawesome_url: Possibilty to provide a different FontAwesome URL to maybe display PRO Icons if you have a license.

Metadata

Release files for st-bnt-group 0.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for st-bnt-group 0.0.4
File Interpreter ABI Platform
st_bnt_group-0.0.4-py3-none-any.whl Python 3 none any Details

Release files / st_bnt_group-0.0.4-py3-none-any.whl

Download URL st_bnt_group-0.0.4-py3-none-any.whl
Size 3.4 MB
Tags Python 3
SHA-256 checksum
How to use checksums
4b8b69893e1bc1dfafc85dbe094536e2341acada5ff878a7109c70fd01959dc9
BLAKE2b-256 checksum
How to use checksums
583dee82b0f5671aae2279113b582b8d7b3f2a5bef167f437c4c4af2b12e07e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.3

Release history Release notifications | RSS feed

This release

0.0.4 This release

1 release file

0.0.3

1 release file

0.0.2

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page