Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What am I doing wrong with gradio.Dropdown? How to dynamically modify the choices of a Dropdown?

I want to create a gradio webui that shows 2 dropdown, rs_hw changes dynamically according to the rs value. What am I doing wrong here?

import gradio as gr

languages = ['spanish', 'english'] 
homeworks = {'spanish': ['hola', 'bien', 'gracias'], 'english': ['hello', 'good', 'thank you']}

def rs_change(rs):
    return homeworks[rs]

with gr.Blocks() as app:

    rs = gr.Dropdown(choices=languages)
    rs_hw = gr.Dropdown()

    rs.change(fn=rs_change, inputs=[rs], outputs=[rs_hw])

    app.launch()

rs_hw keeps always empty

like image 485
Procrastinator Avatar asked Sep 16 '25 14:09

Procrastinator


2 Answers

import gradio as gr

languages = ['spanish', 'english']
homeworks = {'spanish': ['hola', 'bien', 'gracias'], 'english': ['hello', 'good', 'thank you']}

def rs_change(rs):
    print(homeworks[rs])
    return gr.Dropdown.update(choices=homeworks[rs])

def test():
    pass

def webui():
    inputs = [
        gr.Dropdown(choices=languages),
        gr.Dropdown(choices=[]),
        ]

    with gr.Blocks() as app:
        gr.Interface(
            fn=test,
            inputs=inputs,
            outputs=None
        )

        inputs[0].select(fn=rs_change, inputs=inputs[0], outputs=inputs[1])

    app.launch(server_port=1111)

webui()
like image 155
sono mori Avatar answered Sep 18 '25 10:09

sono mori


The solution is the following:

import gradio as gr

languages = ['spanish', 'english'] 
homeworks = {'spanish': ['hola', 'bien', 'gracias'], 'english': ['hello', 'good', 'thank you']}


def rs_change(rs,rs_hw):
    return gr.Dropdown(choices=homeworks[rs])

with gr.Blocks() as app:

    rs = gr.Dropdown(choices=languages)
    rs_hw = gr.Dropdown()

    rs.change(fn=rs_change, inputs=[rs,rs_hw], outputs=[rs_hw])

    app.launch()

However Be aware that even though you don't use the variable rs_hw in the rs_change function, you have to include it in order for Gradio to fill the second dropdown. If you do not, then the code won't work.

like image 39
KansaiRobot Avatar answered Sep 18 '25 08:09

KansaiRobot



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!