import gradio as gr from gradio_modal import Modal import numpy as np def save_input(input, df): #input_value = str(input) df_values = np.array(df) # handle empty dataframe case new_row = [input, 0, input] # default 'age' as 0 for now df_values = np.vstack([df_values, new_row]) df = gr.DataFrame(value=df_values) return df with gr.Blocks() as demo: with gr.Tab("Tab 1"): show_btn = gr.Button("Show Modal") df = gr.Dataframe( headers=["name", "age", "gender"], #datatype=["str", "number", "str"], row_count=1, col_count=(3, "fixed"), ) show_markdown = gr.Markdown("This is a markdown") with Modal(visible=False) as modal: input = gr.Textbox(label="Input 1", interactive=True) button = gr.Button("Click me") button.click(save_input, inputs=[input, df], outputs=[df]) button.click(lambda: Modal(visible=False), None, modal) show_btn.click(lambda: Modal(visible=True), None, modal) if __name__ == "__main__": demo.launch(server_name="0.0.0.0", server_port=3333)