如何设置Gradio示例点击后直接展示翻译结果无需按回车?
解决Gradio示例点击后自动触发翻译的问题
我搭建了一个简单的机器翻译Gradio界面:

现在需要修改代码,让点击示例(比如'Avion blanc')时直接显示翻译结果,无需用户按下回车键。
原代码如下:
import gradio as gr import time def translate_sentence(src_text): start_time = time.time() translation = "hello" # 已移除翻译模型 duration = (time.time() - start_time)*1000 return translation, f"{duration:.0f} ms" with gr.Blocks(title="法语转英语翻译", css="footer{display:none !important}") as demo: input_box = gr.Textbox(lines=1, label="输入(法语)") output_box = gr.Textbox(lines=1, label="翻译结果(英语)") time_box = gr.Text(label="耗时") translate_btn = gr.Button("翻译") gr.Examples( examples=[ ["Avion blanc"], ["Chat sur un arbre"], ["Un oiseau sur l'eau"] ], inputs=input_box, outputs=[output_box, time_box], fn=translate_sentence ) translate_btn.click(translate_sentence, inputs=input_box, outputs=[output_box, time_box]) input_box.submit(translate_sentence, inputs=input_box, outputs=[output_box, time_box]) if __name__ == "__main__": demo.launch()
修改方案
只需在gr.Examples组件中添加run_on_click=True参数,该参数会让点击示例时自动调用指定的翻译函数,直接输出结果,无需额外触发提交操作。
修改后的完整代码
import gradio as gr import time def translate_sentence(src_text): start_time = time.time() translation = "hello" # 已移除翻译模型 duration = (time.time() - start_time)*1000 return translation, f"{duration:.0f} ms" with gr.Blocks(title="法语转英语翻译", css="footer{display:none !important}") as demo: input_box = gr.Textbox(lines=1, label="输入(法语)") output_box = gr.Textbox(lines=1, label="翻译结果(英语)") time_box = gr.Text(label="耗时") translate_btn = gr.Button("翻译") gr.Examples( examples=[ ["Avion blanc"], ["Chat sur un arbre"], ["Un oiseau sur l'eau"] ], inputs=input_box, outputs=[output_box, time_box], fn=translate_sentence, run_on_click=True # 新增参数:点击示例自动触发翻译 ) translate_btn.click(translate_sentence, inputs=input_box, outputs=[output_box, time_box]) input_box.submit(translate_sentence, inputs=input_box, outputs=[output_box, time_box]) if __name__ == "__main__": demo.launch()
内容的提问来源于stack exchange,提问作者Franck Dernoncourt
相关产品推荐
相关产品推荐

