import gradio as gr import pandas as pd import time def update_dataframe(df): df.iloc[:, :] = 1 yield df, 1 time.sleep(0.1) df.iloc[:, :] = 2 yield df, 2 def sum_values(df): return pd.to_numeric(df.values.flatten(), errors='coerce').sum() # type: ignore initial_df = pd.DataFrame(0, index=range(5), columns=range(5)) with gr.Blocks() as demo: with gr.Row(): button = gr.Button("Update DataFrame") number = gr.Number(value=0, label="Number") dataframe = gr.Dataframe(value=initial_df, label="Dataframe") button.click(fn=update_dataframe, inputs=dataframe, outputs=[dataframe, number]) with gr.Row(): change_events = gr.Number(label="Change events") input_events = gr.Number(label="Input events") sum_of_values = gr.Number(label="Sum of values") dataframe.change(lambda x:x+1, inputs=change_events, outputs=change_events) dataframe.input(lambda x:x+1, inputs=input_events, outputs=input_events) dataframe.change(sum_values, inputs=dataframe, outputs=sum_of_values) if __name__ == "__main__": demo.launch()