Mensajes de estado st.success, st.info, st.warning, st.error y st.divider

Básico
Streamlit
Streamlit
Actualizado: 26/04/2026

Mensajes de estado en Streamlit

Los mensajes de estado son componentes visuales que comunican al usuario el resultado de una operación o el estado actual de la aplicación. Forman parte esencial de la retroalimentación de la interfaz: sin ellos, el usuario no tendría forma de saber si una acción se completó correctamente, si hubo un problema o si hay información relevante que debe tener en cuenta.

Cada tipo de mensaje usa un color e icono específico que sigue las convenciones universales de diseño de interfaces (verde = éxito, rojo = error, amarillo = advertencia, azul = información), facilitando la interpretación inmediata sin necesidad de leer el texto completo:

import streamlit as st

st.success("Los datos se han cargado correctamente: 1.250 registros procesados.")
st.info("El análisis puede tardar hasta 30 segundos en completarse.")
st.warning("Se detectaron 12 valores nulos en la columna 'precio'. Han sido imputados con la mediana.")
st.error("Error de conexión: no se pudo acceder a la base de datos en 192.168.1.100:5432.")

Guía de uso:

| Función | Color | Cuándo usarla | |---|---|---| | st.success | Verde | Operación completada exitosamente | | st.info | Azul | Información contextual, instrucciones, aclaraciones | | st.warning | Amarillo | Situación potencialmente problemática que no bloquea | | st.error | Rojo | Error que impide el funcionamiento normal |

flowchart TD
    A[Operación en app Streamlit] --> B{"Resultado?"}
    B -->|Exito completo| C[st.success verde]
    B -->|Información contextual| D[st.info azul]
    B -->|Advertencia no bloqueante| E[st.warning amarillo]
    B -->|Error que detiene flujo| F[st.error rojo]
    B -->|Excepción Python| G[st.exception traceback]
    C --> H[Confirma acción al usuario]
    D --> I[Aclara contexto o instrucción]
    E --> J[Atención sin parar ejecución]
    F --> K[Bloquea siguiente paso]
    G --> L[Diagnóstico para devs]
    H --> M[UX coherente y predecible]
    I --> M
    J --> M
    K --> M
    L --> M

Icono personalizado

Todos los mensajes de estado aceptan el parámetro icon para personalizar el icono mostrado:

st.success("Modelo entrenado", icon="🎯")
st.info("Conectando a la base de datos...", icon="🔗")
st.warning("Dataset desbalanceado", icon="⚖️")
st.error("Timeout de conexión", icon="⏱️")

Mensajes plegables con st.expander

Para mensajes largos o con detalles técnicos, combine los mensajes de estado con st.expander:

import streamlit as st

st.warning("Se encontraron 3 advertencias durante el procesamiento. Expande para ver el detalle.")

with st.expander("Ver advertencias detalladas"):
    st.write("1. Columna 'fecha_nacimiento': 45 valores con formato incorrecto (dd-mm-yyyy en lugar de yyyy-mm-dd).")
    st.write("2. Columna 'email': 12 entradas con formato de email inválido.")
    st.write("3. Columna 'código_postal': 8 registros fuera del rango válido para España.")

st.exception: mostrar excepciones Python

st.exception muestra una excepción Python de forma legible en la interfaz, con el tipo de error, el mensaje y opcionalmente el traceback completo. Es la alternativa visual a imprimir el error en la consola, y resulta especialmente útil durante el desarrollo y en aplicaciones donde los errores técnicos deben ser visibles para el usuario:

import streamlit as st
import pandas as pd

archivo = st.file_uploader("Sube un archivo CSV", type=["csv"])

if archivo is not None:
    try:
        df = pd.read_csv(archivo)
        st.success(f"Archivo cargado: {len(df)} filas, {len(df.columns)} columnas.")
        st.dataframe(df.head())
    except pd.errors.EmptyDataError:
        st.exception(pd.errors.EmptyDataError("El archivo CSV está vacío."))
    except pd.errors.ParserError as e:
        st.exception(e)
    except Exception as e:
        st.error("Se produjo un error inesperado.")
        st.exception(e)

st.help: documentación de objetos Python

st.help muestra la documentación (docstring) de cualquier objeto, función, clase o módulo Python:

import streamlit as st
import pandas as pd

st.title("Referencia rápida de Pandas")
st.help(pd.DataFrame.groupby)
st.help(pd.read_csv)

Es especialmente útil en aplicaciones educativas o de exploración de APIs.

st.divider: separación visual entre secciones

st.divider inserta una línea horizontal para separar visualmente secciones de la aplicación:

import streamlit as st

st.header("Configuración del modelo")
modelo = st.selectbox("Algoritmo", ["Random Forest", "XGBoost", "SVM"])
n_estimadores = st.slider("Estimadores", 50, 500, 100)

st.divider()

st.header("Resultados del entrenamiento")
# ... mostrar resultados

st.divider()

st.header("Exportar modelo")
# ... opciones de exportación

Patrón de validación con mensajes de estado

Un patrón habitual es validar datos del usuario y mostrar el mensaje de estado adecuado según el resultado:

import streamlit as st

st.title("Calculadora de IMC")

col1, col2 = st.columns(2)
with col1:
    peso = st.number_input("Peso (kg)", min_value=1.0, max_value=300.0, value=70.0, step=0.5)
with col2:
    altura = st.number_input("Altura (m)", min_value=0.5, max_value=2.5, value=1.75, step=0.01)

if st.button("Calcular IMC", type="primary"):
    imc = peso / (altura ** 2)

    st.divider()
    st.metric("Índice de Masa Corporal", f"{imc:.2f} kg/m²")

    if imc < 18.5:
        st.warning(f"IMC {imc:.1f}: Bajo peso. Consulta con un profesional de la salud.")
    elif imc < 25:
        st.success(f"IMC {imc:.1f}: Peso normal. ¡Sigue así!")
    elif imc < 30:
        st.warning(f"IMC {imc:.1f}: Sobrepeso. Considera consultar con un nutricionista.")
    else:
        st.error(f"IMC {imc:.1f}: Obesidad. Es recomendable consultar con un médico.")

    st.info("El IMC es una medida orientativa y no sustituye el diagnóstico médico profesional.")

Este patrón de recoger datos del usuario, procesar y comunicar el resultado con el mensaje de estado apropiado es uno de los más habituales en aplicaciones Streamlit, tanto en dashboards analíticos como en herramientas internas de gestión.

Los mensajes de estado se insertan en el flujo del contenido y permanecen visibles hasta que el script se re-ejecuta. Para notificaciones temporales que desaparecen automáticamente sin ocupar espacio permanente, se utiliza st.toast.

Alan Sastre - Autor del tutorial

Alan Sastre

Ingeniero de Software y formador, CEO en CertiDevs

Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, Streamlit es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.

Más tutoriales de Streamlit

Explora más contenido relacionado con Streamlit y continúa aprendiendo con nuestros tutoriales gratuitos.

Aprendizajes de esta lección

Mostrar mensajes de éxito, información, advertencia y error con las funciones correspondientes. Usar st.exception para mostrar excepciones Python de forma legible. Aplicar st.help para documentación dinámica de objetos Python. Separar secciones visualmente con st.divider. Decidir cuándo usar cada tipo de mensaje para comunicar el estado de la aplicación.