Spaces:
Sleeping
Sleeping
import gradio as gr | |
with gr.Blocks() as demo: | |
gr.Markdown( | |
""" | |
# Animal Generator | |
Once you select a species, the detail panel should be visible. | |
""" | |
) | |
species = gr.Radio(label="Animal Class", choices=["Mammal", "Fish", "Bird"]) | |
animal = gr.Dropdown(label="Animal", choices=[]) | |
with gr.Column(visible=False) as details_col: | |
weight = gr.Slider(0, 20) | |
details = gr.Textbox(label="Extra Details") | |
generate_btn = gr.Button("Generate") | |
output = gr.Textbox(label="Output") | |
species_map = { | |
"Mammal": ["Elephant", "Giraffe", "Hamster"], | |
"Fish": ["Shark", "Salmon", "Tuna"], | |
"Bird": ["Chicken", "Eagle", "Hawk"], | |
} | |
def filter_species(species): | |
return gr.Dropdown( | |
choices=species_map[species], value=species_map[species][1] | |
), gr.Column(visible=True) | |
species.change(filter_species, species, [animal, details_col]) | |
def filter_weight(animal): | |
if animal in ("Elephant", "Shark", "Giraffe"): | |
return gr.Slider(maximum=100) | |
else: | |
return gr.Slider(maximum=20) | |
animal.change(filter_weight, animal, weight) | |
weight.change(lambda w: gr.Textbox(lines=int(w / 10) + 1), weight, details) | |
generate_btn.click(lambda x: x, details, output) | |
if __name__ == "__main__": | |
demo.launch() |