# Terminal

> Una vista de terminal de solo lectura con colores ANSI. 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/terminal/

:::tip[En pocas palabras]
Muestra el texto que imprime un programa, con sus colores, como una ventana de terminal.
:::

Una vista de solo lectura que entiende los colores ANSI y se queda al final. Pásale la salida de un proceso que ejecutes (por ejemplo con `subprocess` en un hilo y `pz.post`). También acepta líneas de segmentos `(texto, color)`; `ui.ansi(text)` convierte texto ANSI en esos segmentos.

`ui.terminal` · Categoría: [Código y herramientas](https://albakore.github.io/pyzed/es/library/#código-y-herramientas) · [Referencia completa →](https://albakore.github.io/pyzed/es/reference/ui/#terminal)

**Código:**

```python
out = ("$ pytest -q\n\x1b[32m........................\x1b[0m\n\x1b[32m24 passed\x1b[0m in 1.21s\n"
       "$ maturin develop --release\n\x1b[2m   Compiling pyzed v0.4.0\x1b[0m\n"
       "\x1b[32m✓\x1b[0m Installed pyzed-0.4.0\n$ ")
pz.container(ui.terminal(out), width=560, height=190)
```

## Cuándo usarlo

- Para mostrar la salida de una compilación, tests, registros de un servidor o cualquier comando.

## Uso

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

out = ("$ pytest -q\n\x1b[32m........................\x1b[0m\n\x1b[32m24 passed\x1b[0m in 1.21s\n"
       "$ maturin develop --release\n\x1b[2m   Compiling pyzed v0.4.0\x1b[0m\n"
       "\x1b[32m✓\x1b[0m Installed pyzed-0.4.0\n$ ")
pz.container(ui.terminal(out), width=560, height=190)
```

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

### Contenido

```python
pz.container(ui.terminal("$ ls\nmain.py  notes.md  pyproject.toml\n$ "), width=380, height=80)
```

```python
pz.container(ui.terminal("\x1b[32m✓\x1b[0m 24 passed  \x1b[33m!\x1b[0m 1 warning  \x1b[31m✗\x1b[0m 0 failed"),
             width=380, height=50)
```

```python
pz.container(ui.terminal("$ python main.py\nHello", font_size=16), width=380, height=70)
```

```python
pz.container(ui.terminal([[("ok ", "#a1c181"), ("build", None)], [("err ", "#d07277"), ("lint", None)]]),
             width=380, height=60)
```

## Eventos

Terminal 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.terminal`

```python
terminal(lines, *, font_size=13, id=None, theme=None)
```

Una vista de terminal de solo lectura con colores ANSI. Se mantiene desplazada al final.

| Propiedad | Por defecto | Descripción |
| --- | --- | --- |
| `lines` | *obligatorio* | Texto con escapes ANSI o lista de líneas de segmentos `(texto, color)`. |
| `font_size` | `13` | Tamaño de la fuente. |
| `id` | `None` | Identificador estable para enfocarlo o desplazarlo con un `Command`. |
| `theme` | `None` | Tema a usar en lugar del actual (`pyzed.theme.current()`). |

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

### `ui.ansi`

```python
ansi(text)
```

Convierte texto con colores ANSI en líneas de segmentos `(texto, nombre_de_color)`.

| Propiedad | Por defecto | Descripción |
| --- | --- | --- |
| `text` | *obligatorio* | Texto con escapes ANSI. |

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

## Relacionados

- [Consola](https://albakore.github.io/pyzed/es/library/console/): Un registro estilo dev tools con niveles, filtro, copiar y limpiar.
- [Editor](https://albakore.github.io/pyzed/es/library/editor/): Un editor de código completo: resaltado, plegado, minimapa, marcas de git.
