点击提交后如何刷新Gradio按钮并修改输入文本框标签?
实现Gradio序列问答的输入框标签动态修改功能
要实现点击提交后修改输入框标签并刷新输入内容,原代码的gr.Interface属于声明式结构,难以支持组件属性的动态修改,需要改用gr.Blocks构建界面,通过事件绑定实现动态更新。
完整实现代码
import gradio as gr def generate_output(input_text): output_text = "Hello, " + input_text + "!" # 返回输出内容,同时返回输入框的更新配置 return output_text, gr.update(label="question 2", value="") with gr.Blocks(title="Sequence Q&A Demo") as demo: gr.Markdown("# 序列问答演示") gr.Markdown("输入文本提交后,输入框标签会更新为question 2,同时清空输入内容") input_box = gr.Textbox(label="Input Text") output_box = gr.Textbox(label="Output") submit_btn = gr.Button("提交") # 绑定提交按钮事件:触发处理函数,同时更新输出框和输入框 submit_btn.click( fn=generate_output, inputs=input_box, outputs=[output_box, input_box] ) demo.launch(share=False)
关键说明
- 采用
gr.Blocks:这是Gradio的底层API,支持组件的动态属性修改和自定义交互逻辑 - 扩展函数返回值:
generate_output除了生成输出文本,还返回gr.update()对象,用来修改输入框的label为"question 2",同时将value设为空实现输入内容的“刷新” - 事件关联:通过
submit_btn.click()将处理结果同时绑定到输出框和输入框,一次提交完成两个更新操作
内容的提问来源于stack exchange,提问作者ardito.bryan
相关产品推荐
相关产品推荐

