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
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()
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With