如何获取Gradio中TextArea组件的当前文本值?
如何获取Gradio TextArea的当前输入值
直接访问input1.value只能拿到初始化时的默认值,Gradio组件的实时输入值必须通过事件回调机制获取,以下是两种常用实现方式:
1. 绑定事件回调函数获取
这是Gradio的标准用法,比如通过按钮点击触发回调,接收TextArea的当前值:
import gradio as gr example = "默认文本" input1 = gr.TextArea(label="Text (100 words max)", value=example, elem_id="input1") def get_current_text(text): # 函数参数text即为TextArea的当前输入内容 return f"当前输入:{text}" with gr.Blocks() as demo: input1 get_btn = gr.Button("获取当前值") result_box = gr.Textbox() get_btn.click(fn=get_current_text, inputs=input1, outputs=result_box) demo.launch()
- 核心逻辑:触发事件(如按钮点击)时,Gradio会自动将绑定组件的当前值传入回调函数的对应参数,无需手动读取组件属性。
2. 用gr.State同步并获取实时值
如果需要在多个场景下共享或随时获取输入值,可以通过gr.State组件同步TextArea的实时内容:
import gradio as gr example = "默认文本" with gr.Blocks() as demo: input_state = gr.State(value=example) input1 = gr.TextArea(label="Text (100 words max)", value=example, elem_id="input1") # 实时同步输入内容到State input1.change(fn=lambda x: x, inputs=input1, outputs=input_state) def fetch_current_value(state): return f"当前输入值:{state}" get_btn = gr.Button("获取当前值") result_box = gr.Textbox() get_btn.click(fn=fetch_current_value, inputs=input_state, outputs=result_box) demo.launch()
- 核心逻辑:通过
input1.change事件监听输入变化,每次内容更新时同步到gr.State,后续可通过回调读取State中的实时值。
注意:组件对象的.value属性仅存储初始化时的默认值,运行时用户的输入不会更新该属性,因此不能通过它获取实时内容。
内容的提问来源于stack exchange,提问作者sooyeon
相关产品推荐
相关产品推荐

