How to put an input widget inside 'while' loop

Hi everyone.

I am showing the webcam screen continuously in the streamlit application while a toggle button is ON.

From here, what I want is that when a button is pressed, break the loop and do some type of processing with the current frame, but I am having problems putting a st.button inside the while loop.

Any advice?
Thanks!

This is the fragment of the code:

run = st.toggle(f'Activar `streaming` de la cámara')

# Se crea una ventana para ir mostrando los 'frames' de la cámara ('array' para ir añadiendo de forma continua los 'frames')
frame_window = st.image([])

# Se realiza una captura de vídeo
capture = cv2.VideoCapture(0)

# Mientras el botón de 'streaming' está activado..
while run:

    # Se comienza a capturar los 'frames' y se guardan dos valores ('ret' es una variable booleana que indica cuando SÍ se
    # ha capturado una imagen; y 'frame' es la imagen que se está capturando en ese momento).
    ret, frame = capture.read()

    # El 'frame' se cambia a escala RGB
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

    # Muestra imagen en la ventana definida arriba con la anchura de la columna, por lo que la imagen se muestra centrada
    frame_window.image(frame, caption='Pantalla de la cámara', use_column_width='always')

    # Botón de activar el procesado del 'frame'
    troph_button = st.button('Detection')

    # Si se pulsa el botón se realiza la detección de objetos
    if troph_button:

             # processing frame