# Texto enriquecido

> Un bloque de texto que mezcla colores, pesos y enlaces. Un componente nativo de Pyzed para GUIs de escritorio en Python, con vista previa, ejemplos y su API.

Source: https://albakore.github.io/pyzed/es/library/rich-text/

:::tip[En pocas palabras]
Una frase en la que algunas palabras van en negrita, de color o son enlaces.
:::

Combina fragmentos `pz.span(text, color=, size=, font=, weight=, italic=, bg=, underline=, strikethrough=, link=)` en un único bloque de texto que se ajusta como un todo. Al pulsar un fragmento con `link` se envía ese valor.

`pz.rich_text` · Categoría: [Contenido](https://albakore.github.io/pyzed/es/library/#contenido) · [Referencia completa →](https://albakore.github.io/pyzed/es/reference/widgets/#rich_text)

**Código:**

```python
pz.rich_text([
    pz.span("rich_text "),
    pz.span("mixes ", color="#e5c07b"),
    pz.span("styles", weight="bold", underline=True),
    pz.span(" on one line, with "),
    pz.span(" code ", font="IBM Plex Mono", bg="#3b414d", radius=4),
    pz.span(" and "),
    pz.span("links", color="#74ade8", underline=True, link="https://iced.rs"),
], size=18, width=460)
```

## Cuándo usarlo

- Para resaltados en línea, menciones, coincidencias de búsqueda y mensajes cortos con formato.

## Uso

```python
import pyzed as pz

pz.rich_text([
    pz.span("rich_text "),
    pz.span("mixes ", color="#e5c07b"),
    pz.span("styles", weight="bold", underline=True),
    pz.span(" on one line, with "),
    pz.span(" code ", font="IBM Plex Mono", bg="#3b414d", radius=4),
    pz.span(" and "),
    pz.span("links", color="#74ade8", underline=True, link="https://iced.rs"),
], size=18, width=460)
```

## Variantes

:::note[Sobre estas capturas]
Cada captura la graba pyzed mismo, fuera de pantalla a 2x, en One Dark o One Light según el tema de este sitio, y recortada al componente para que se vea a su tamaño real. El puntero pasa por encima, pulsa o escribe en él; un componente que no reacciona al puntero recorre algunos temas. Con movimiento reducido ves el primer fotograma. Abre **Código** bajo una captura para ver el fragmento que la dibuja; los nombres libres como `on_save` son tus propios callbacks.
:::

### Estilos de span

```python
pz.rich_text([pz.span("Some "), pz.span("bold", weight="bold"), pz.span(" text")], size=16)
```

```python
pz.rich_text([pz.span("Some "), pz.span("italic", italic=True), pz.span(" text")], size=16)
```

```python
pz.rich_text([pz.span("Some "), pz.span("colored", color="#e5c07b"), pz.span(" text")], size=16)
```

```python
pz.rich_text([pz.span("Some "), pz.span("underlined", underline=True), pz.span(" text")], size=16)
```

```python
pz.rich_text([pz.span("Some "), pz.span("struck", strikethrough=True), pz.span(" text")], size=16)
```

```python
pz.rich_text([pz.span("Run "), pz.span(" pyzed new ", font="mono", bg="#3b414d", color="#e6e6e6", radius=4)], size=16)
```

```python
pz.rich_text([pz.span("Read "), pz.span("the docs", color="#74ade8", underline=True, link="https://iced.rs")], size=16)
```

```python
pz.rich_text([pz.span("small ", size=12), pz.span("big", size=24, weight="bold")])
```

## Eventos

Texto enriquecido no tiene eventos propios: muestra lo que le das. Como todo widget, también tiene los **18 eventos comunes** (`click`, `double_click`, `right_click`, `mouse_enter`, `drag`, `key_down`, `resize`…), que se conectan con `.on(...)`: mira [Eventos](https://albakore.github.io/pyzed/es/guides/events/) y [Eventos de cada componente](https://albakore.github.io/pyzed/es/library/events/).

## Propiedades y API

### `pz.rich_text`

```python
rich_text(
    spans,
    *,
    size=None,
    color=None,
    font=None,
    line_height=None,
    width=None,
    align_x=None,
    wrap=True,
)
```

Texto hecho de fragmentos con estilos distintos. Los textos sueltos son fragmentos sin estilo.

| Propiedad | Por defecto | Descripción |
| --- | --- | --- |
| `spans` | *obligatorio* | Lista de `span(...)` o textos. |
| `size` | `None` | Tamaño. |
| `color` | `None` | Color del texto o del icono. |
| `font` | `None` | Fuente del fragmento o del texto (nombre de familia, p. ej. `"IBM Plex Mono"`). |
| `line_height` | `None` | Alto de línea. |
| `width` | `None` | Ancho: píxeles, `"fill"`, `"shrink"` o `"fill:N"` (proporción). |
| `align_x` | `None` | Alineación horizontal: `"start"`/`"left"`, `"center"`, `"end"`/`"right"`. |
| `wrap` | `True` | Ajuste de línea / pasa los hijos a una nueva fila cuando no caben. |

[Referencia completa →](https://albakore.github.io/pyzed/es/reference/widgets/#rich_text)

### `pz.span`

```python
span(
    text,
    *,
    color=None,
    size=None,
    font=None,
    weight=None,
    italic=False,
    bg=None,
    radius=0.0,
    padding=None,
    underline=False,
    strikethrough=False,
    link=None,
)
```

Un fragmento con estilo para `rich_text`. Con `link`, al pulsarlo se envía (o se llama) ese valor.

| Propiedad | Por defecto | Descripción |
| --- | --- | --- |
| `text` | *obligatorio* | El texto. |
| `color` | `None` | Color del texto o del icono. |
| `size` | `None` | Tamaño. |
| `font` | `None` | Fuente del fragmento o del texto (nombre de familia, p. ej. `"IBM Plex Mono"`). |
| `weight` | `None` | Grosor de la fuente: `"normal"`, `"medium"`, `"semibold"` o `"bold"`. |
| `italic` | `False` | Si es `True`, el fragmento se dibuja en cursiva. |
| `bg` | `None` | Color de fondo (`"#rrggbb[aa]"`, `(r, g, b[, a])` o `"transparent"`). |
| `radius` | `0.0` | Radio del fondo. |
| `padding` | `None` | Relleno interior: `8`, `(vertical, horizontal)` o `(arriba, derecha, abajo, izquierda)`. |
| `underline` | `False` | Subrayado. |
| `strikethrough` | `False` | Tachado. |
| `link` | `None` | Mensaje o callable al pulsarlo. |

[Referencia completa →](https://albakore.github.io/pyzed/es/reference/widgets/#span)

## Relacionados

- [Texto](https://albakore.github.io/pyzed/es/library/text/): Un texto con tamaño, color, fuente y peso.
- [Markdown](https://albakore.github.io/pyzed/es/library/markdown/): Muestra Markdown con los colores del tema.
