import gradio as gr blocks = gr.Blocks() with blocks as demo: subject = gr.Textbox(placeholder="subject") verb = gr.Radio(["ate", "loved", "hated"]) object = gr.Textbox(placeholder="object") with gr.Row(): btn = gr.Button("Create sentence.") reverse_btn = gr.Button("Reverse sentence.") foo_bar_btn = gr.Button("Append foo") reverse_then_to_the_server_btn = gr.Button( "Reverse sentence and send to server." ) def sentence_maker(w1, w2, w3): return f"{w1} {w2} {w3}" output1 = gr.Textbox(label="output 1") output2 = gr.Textbox(label="verb") output3 = gr.Textbox(label="verb reversed") output4 = gr.Textbox(label="front end process and then send to backend") btn.click(sentence_maker, [subject, verb, object], output1) reverse_btn.click( None, [subject, verb, object], output2, _js="(s, v, o) => o + ' ' + v + ' ' + s" ) verb.change(lambda x: x, verb, output3, _js="(x) => [...x].reverse().join('')") foo_bar_btn.click(None, [], subject, _js="(x) => x + ' foo'") reverse_then_to_the_server_btn.click( sentence_maker, [subject, verb, object], output4, _js="(s, v, o) => [s, v, o].map(x => [...x].reverse().join(''))", ) if __name__ == "__main__": demo.launch()