Data Editor Checkbox on Change

Here is a toy example of how you can do that:

import streamlit as st
import pandas as pd

if "df" not in st.session_state:
    st.session_state.df = pd.DataFrame(
        {
            "Name":["A","B","C"],
            "Approve":[False,False,False],
            "Deny":[False,False,False]
        }
    )
df = st.session_state.df

new_df = st.data_editor(df, key="edits")

if st.session_state.edits["edited_rows"]:
    for row, edits in st.session_state.edits["edited_rows"].items():
        for col, value in edits.items():
            st.session_state.df.loc[row, col] = value
        if "Approve" in edits and edits["Approve"] == True:
            st.session_state.df.loc[row, "Deny"] = False
        elif "Deny" in edits and edits["Deny"] == True:
            st.session_state.df.loc[row, "Approve"] = False
    st.rerun()