Spaces:
Running
Running
| import gradio as gr | |
| from gradio_dropdownplus import DropdownPlus | |
| # --- 1. Define Choices and Helper Function --- | |
| # Choices for demonstration | |
| MODEL_CHOICES = [ | |
| ("GPT-4 Turbo", "gpt-4-1106-preview"), | |
| ("Claude 3 Opus", "claude-3-opus-20240229"), | |
| ("Llama 3 70B", "llama3-70b-8192"), | |
| ] | |
| FEATURE_CHOICES = ["Feature A", "Feature B", "Feature C", "Feature D"] | |
| def update_output(model_selection, feature_selection_with_info, multi_selection): | |
| """Formats the selected values for display.""" | |
| return ( | |
| f"--- SELECTIONS ---\n\n" | |
| f"Model Selection (Help only): {model_selection}\n\n" | |
| f"Feature Selection (Help & Info): {feature_selection_with_info}\n\n" | |
| f"Multi-Select Features: {multi_selection}" | |
| ) | |
| # --- 2. Build the Gradio App --- | |
| with gr.Blocks(theme=gr.themes.Ocean(), title="DropdownPlus Demo") as demo: | |
| gr.Markdown( | |
| """ | |
| # DropdownPlus Component Demo | |
| A demonstration of the `tooltip` functionality in the DropdownPlus component. | |
| """ | |
| ) | |
| with gr.Row(): | |
| with gr.Column(scale=2): | |
| gr.Markdown("### Interactive Examples") | |
| # --- Example 1: Dropdown with `label` and `help` only --- | |
| dropdown_help_only = DropdownPlus( | |
| choices=MODEL_CHOICES, | |
| label="Select a Model", | |
| help="This is a tooltip. It appears next to the label and provides brief guidance.", | |
| interactive=True | |
| ) | |
| # --- Example 3: Multi-select to show it works there too --- | |
| dropdown_multi = DropdownPlus( | |
| choices=FEATURE_CHOICES, | |
| label="Select Multiple Features", | |
| info="Help and info also work with multiselect.", | |
| help="Select one or more options.", | |
| multiselect=True, | |
| value=["Feature A", "Feature C"], # Default value | |
| interactive=True | |
| ) | |
| # --- Example 2: Dropdown with `label`, `help`, AND `info` --- | |
| dropdown_with_info = DropdownPlus( | |
| choices=FEATURE_CHOICES, | |
| label="Choose a Feature", | |
| info="This text appears below the label to provide more context.", | |
| help="The tooltip still appears next to the label, even when 'info' text is present.", | |
| interactive=True | |
| ) | |
| with gr.Column(scale=1): | |
| gr.Markdown("### Output") | |
| output_textbox = gr.Textbox( | |
| label="Current Values", | |
| lines=8, | |
| interactive=False | |
| ) | |
| # --- Event Listeners --- | |
| # List of all interactive components | |
| inputs = [ | |
| dropdown_help_only, | |
| dropdown_with_info, | |
| dropdown_multi | |
| ] | |
| # Any change to any dropdown will update the output textbox | |
| for component in inputs: | |
| component.change( | |
| fn=update_output, | |
| inputs=inputs, | |
| outputs=output_textbox | |
| ) | |
| # Trigger the initial display on load | |
| demo.load( | |
| fn=update_output, | |
| inputs=inputs, | |
| outputs=output_textbox | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() |