import gradio as gr countries_cities_dict = { "USA": ["New York", "Los Angeles", "Chicago"], "Canada": ["Toronto", "Montreal", "Vancouver"], "Pakistan": ["Karachi", "Lahore", "Islamabad"], } def change_textbox(choice): if choice == "short": return gr.Textbox(lines=2, visible=True), gr.Button(interactive=True) elif choice == "long": return gr.Textbox(lines=8, visible=True, value="Lorem ipsum dolor sit amet"), gr.Button(interactive=True) else: return gr.Textbox(visible=False), gr.Button(interactive=False) with gr.Blocks() as demo: radio = gr.Radio( ["short", "long", "none"], label="What kind of essay would you like to write?" ) text = gr.Textbox(lines=2, interactive=True, show_copy_button=True) with gr.Row(): num = gr.Number(minimum=0, maximum=100, label="input") out = gr.Number(label="output") minimum_slider = gr.Slider(0, 100, 0, label="min") maximum_slider = gr.Slider(0, 100, 100, label="max") submit_btn = gr.Button("Submit", variant="primary") with gr.Row(): country = gr.Dropdown(list(countries_cities_dict.keys()), label="Country") cities = gr.Dropdown([], label="Cities") @country.change(inputs=country, outputs=cities) def update_cities(country): cities = list(countries_cities_dict[country]) return gr.Dropdown(choices=cities, value=cities[0], interactive=True) def reset_bounds(minimum, maximum): return gr.Number(minimum=minimum, maximum=maximum) radio.change(fn=change_textbox, inputs=radio, outputs=[text, submit_btn]) gr.on( [minimum_slider.change, maximum_slider.change], reset_bounds, [minimum_slider, maximum_slider], outputs=num, ) num.submit(lambda x: x, num, out) if __name__ == "__main__": demo.launch()