# Progreso

> Una barra de progreso fina en un color semántico. 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/progress/

:::tip[En pocas palabras]
Una barra que se llena para mostrar cuánto falta de una tarea.
:::

Una barra fina que se llena de `0` a `max` (1.0 por defecto). `tint` cambia su color y `height` su grosor.

`ui.progress` · Categoría: [Estado y avisos](https://albakore.github.io/pyzed/es/library/#estado-y-avisos) · [Referencia completa →](https://albakore.github.io/pyzed/es/reference/ui/#progress)

**Código:**

```python
pz.column([
    ui.progress(0.25),
    ui.progress(0.6, tint="success", height=6),
    ui.progress(37, max=40, tint="warning", height=8),
], spacing=18, width=360)
```

## Cuándo usarlo

- Para trabajos cuyo avance puedes medir: descargas, compilaciones, importaciones.
- Cuando no se puede medir, muestra un [Spinner](https://albakore.github.io/pyzed/es/library/spinner/).

## Uso

```python
import pyzed as pz
from pyzed import ui

class Download(pz.App):
    def __init__(self):
        self.done, self.total = 0, 1

    def update(self, message):
        self.done, self.total = message  # posted from a worker thread with pz.post((done, total))

    def view(self):
        return ui.progress(self.done, max=self.total)
```

## 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.
:::

### Valor

```python
ui.progress(0.1, width=240)
```

```python
ui.progress(0.5, width=240)
```

```python
ui.progress(1.0, width=240)
```

```python
ui.progress(37, max=40, width=240)
```

### Tinte

```python
ui.progress(0.7, tint="success", width=240)
```

```python
ui.progress(0.7, tint="warning", width=240)
```

```python
ui.progress(0.7, tint="error", width=240)
```

### Grosor

```python
ui.progress(0.6, height=2, width=240)
```

```python
ui.progress(0.6, height=4, width=240)
```

```python
ui.progress(0.6, height=10, width=240)
```

### Estados y eventos

```python
pz.container(ui.progress(0.42, label="Downloading", show_value=True), width=300)
```

```python
pz.container(ui.progress(None, label="Indexing"), width=300)
```

### Widget base

El widget `pz.*` de debajo: sin tema, todos los colores y tamaños son tuyos.

```python
pz.progress_bar(64, max=100, width=240, height=12, accent="#c678dd", bg="#c678dd33", radius=6)
```

## Eventos

Progreso 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

### `ui.progress`

```python
progress(
    value,
    *,
    max=1.0,
    tint='accent',
    height=4,
    width='fill',
    label=None,
    show_value=False,
    theme=None,
)
```

Una barra de progreso fina.

| Propiedad | Por defecto | Descripción |
| --- | --- | --- |
| `value` | *obligatorio* | Progreso, o `None` para una barra indeterminada (mantén una suscripción `pz.every(1/30, ...)` mientras se ve). |
| `max` | `1.0` | Valor máximo. |
| `tint` | `"accent"` | Color semántico: `"accent"`, `"error"`, `"warning"`, `"success"`, `"info"` o un token. |
| `height` | `4` | Grosor. |
| `width` | `"fill"` | Ancho: píxeles, `"fill"`, `"shrink"` o `"fill:N"` (proporción). |
| `label` | `None` | Texto sobre la barra. |
| `show_value` | `False` | Añade el porcentaje a su derecha. |
| `theme` | `None` | Tema a usar en lugar del actual (`pyzed.theme.current()`). |

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

### `pz.progress_bar`

```python
progress_bar(
    value,
    *,
    min=0.0,
    max=1.0,
    width=None,
    height=None,
    accent=None,
    bg=None,
    radius=2.0,
)
```

Una barra de progreso.

| Propiedad | Por defecto | Descripción |
| --- | --- | --- |
| `value` | *obligatorio* | Valor actual. |
| `min` | `0.0` | Mínimo. |
| `max` | `1.0` | Máximo. |
| `width` | `None` | Ancho: píxeles, `"fill"`, `"shrink"` o `"fill:N"` (proporción). |
| `height` | `None` | Alto: píxeles, `"fill"`, `"shrink"` o `"fill:N"` (proporción). |
| `accent` | `None` | Color de acento (parte activa). |
| `bg` | `None` | Color de fondo (`"#rrggbb[aa]"`, `(r, g, b[, a])` o `"transparent"`). |
| `radius` | `2.0` | Radio de las esquinas. |

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

## Relacionados

- [Spinner](https://albakore.github.io/pyzed/es/library/spinner/): Un arco que gira para los estados de carga.
- [Deslizador](https://albakore.github.io/pyzed/es/library/slider/): Elige un número de un rango arrastrando.
- [Cifra](https://albakore.github.io/pyzed/es/library/stat/): Una cifra de dashboard con variación y minigráfico.
