Gradio技术问题:如何将Tab1输出传至Tab2输入并切换至Tab2
解决方案
要实现将Tab1的output_text2内容传递到Tab2的input_text2并自动切换标签页,只需修改以下几处:
- 添加状态变量跟踪标签页:用
gr.State存储当前选中的标签索引,0对应tab1,1对应tab2。 - 改造
send函数:让它接收output_text2的内容,返回要填充给input_text2的值,以及切换到tab2的状态值。 - 绑定按钮事件:让
send_btn的点击事件关联输入输出,同时完成内容传递和标签切换。
修改后的完整代码:
import gradio as gr def processing1(text): return "result1", "result2" # 接收output_text2的内容,返回要填充的文本和切换标签的状态 def send(output_text2_content): return output_text2_content, 1 # 1代表切换到第二个标签(tab2) def processing2(text): return "result3" tab1 = gr.Blocks() with tab1: with gr.Row(): with gr.Column(): input_text = gr.TextArea(label="Input Text", placeholder="Paste your text here") submit_btn = gr.Button("submit") with gr.Column(): output_text1 = gr.TextArea(label="Output Text") output_text2 = gr.TextArea(label="Output Text2") send_btn = gr.Button("send to tab2") submit_btn.click(processing1, inputs=[input_text], outputs=[output_text1, output_text2]) # 绑定输入为output_text2,输出为input_text2和标签状态 send_btn.click(send, inputs=[output_text2], outputs=[input_text2, current_tab]) tab2 = gr.Blocks() with tab2: with gr.Row(): with gr.Column(): input_text2 = gr.TextArea(label="Input Text", placeholder="Paste your text here") checkbox1 = gr.Checkbox(label="checkbox1") checkbox2 = gr.Checkbox(label="checkbox2") submit_btn2 = gr.Button("submit") with gr.Column(): output_text3 = gr.TextArea(label="Output Text") submit_btn2.click(processing2, inputs=input_text2, outputs=output_text3) # 创建状态变量跟踪当前标签,初始选中tab1 current_tab = gr.State(0) # 将标签选中状态绑定到TabbedInterface demo = gr.TabbedInterface([tab1, tab2], tab_names=["tab1", "tab2"], selected=current_tab) demo.launch()
关键修改说明:
gr.State变量:current_tab控制TabbedInterface的选中标签,修改它的值就能自动切换标签页。send函数逻辑:返回两个结果,第一个是要传递的文本内容,第二个是目标标签的索引。- 按钮事件关联:
send_btn点击后,同时触发input_text2的内容更新和标签页切换。
内容的提问来源于stack exchange,提问作者Wade Wang
相关产品推荐
相关产品推荐

