如何将Gradio组件值传递给函数命名参数?附具体场景示例
解决Gradio组件值传递给函数命名参数的问题
要将txt2的值传递给dummy()的命名参数c,你可以在btn.click()方法中使用字典形式的inputs参数,直接映射组件到目标命名参数,无需按位置传递。
修改后的完整代码
import gradio as gr def dummy(a, b='Hello', c='!'): return '{0} {1} {2}'.format(b, a, c) with gr.Blocks() as demo: txt = gr.Textbox(value="test", label="Query", lines=1) txt2 = gr.Textbox(value="test2", label="Query2", lines=1) answer = gr.Textbox(value="", label="Answer") btn = gr.Button(value="Submit") # 使用字典映射组件到函数的命名参数 btn.click(dummy, inputs={"a": txt, "c": txt2}, outputs=[answer]) gr.ClearButton([answer]) demo.launch()
关键说明
- 当
inputs是字典时,字典的键对应函数的参数名,值对应Gradio组件,Gradio会自动将组件的当前值传递给对应的命名参数。 - 未在字典中指定的参数(比如这里的
b)会使用函数定义中的默认值Hello。 - 如果需要同时传递位置参数和命名参数,也可以结合列表和字典,但在这个场景下纯字典的方式更直接清晰。
内容的提问来源于stack exchange,提问作者Franck Dernoncourt
相关产品推荐
相关产品推荐

