# Kbd

> Atajos de teclado dibujados como teclas, con símbolos en macOS. Componente de Pyzed para GUIs de escritorio en Python, con ejemplos y API.

Source: https://albakore.github.io/pyzed/es/library/kbd/

:::tip[En pocas palabras]
Dibuja teclas del teclado para que la gente aprenda el atajo: Ctrl + S.
:::

Dibuja un atajo escrito como texto (`"ctrl-shift-p"`, acordes como `"cmd-k cmd-s"`) como teclas. En macOS usa símbolos (⌘⇧P) y palabras en el resto; `pyzed.ui.base.KEY_STYLE` fuerza `"symbols"` o `"words"`. `ui.format_keys` devuelve las etiquetas si quieres dibujarlas tú.

`ui.kbd` · Categoría: [Visualización](https://albakore.github.io/pyzed/es/library/#visualización) · [Referencia completa →](https://albakore.github.io/pyzed/es/reference/ui/#kbd)

**Código:**

```python
pz.column([
    ui.kbd("ctrl-shift-p"),
    ui.kbd("ctrl-k ctrl-s"),
    pz.row([ui.kbd("escape", size="xs"), ui.kbd("enter", size="xs"), ui.kbd("tab", size="xs")], spacing=8),
], spacing=12, align="center")
```

## Cuándo usarlo

- En menús, tooltips, paletas y pantallas de ayuda, para enseñar atajos.
- Muchos componentes ya aceptan `keys=` y lo dibujan por ti (botón, entrada de menú, tooltip).

## Uso

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

pz.column([
    ui.kbd("ctrl-shift-p"),
    ui.kbd("ctrl-k ctrl-s"),
    pz.row([ui.kbd("escape", size="xs"), ui.kbd("enter", size="xs"), ui.kbd("tab", size="xs")], spacing=8),
], spacing=12, align="center")
```

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

### Teclas

Escribe los atajos como `"ctrl-s"`; en macOS `ctrl` pasa a ⌃ y `cmd` a ⌘ solo.

```python
ui.kbd("enter")
```

```python
ui.kbd("ctrl-shift-p")
```

```python
ui.kbd("ctrl-k ctrl-s")
```

```python
pz.row([ui.kbd("escape"), ui.kbd("tab"), ui.kbd("backspace"), ui.kbd("up")], spacing=6)
```

### Tamaño

```python
ui.kbd("ctrl-p", size="xs")
```

```python
ui.kbd("ctrl-p", size="sm")
```

## Eventos

Kbd 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.kbd`

```python
kbd(keys, *, size='sm', theme=None)
```

Dibuja un atajo como teclas: `"ctrl-shift-p"`, `"cmd-k cmd-s"`. En macOS usa símbolos (⌘⇧P) y en el resto palabras.

| Propiedad | Por defecto | Descripción |
| --- | --- | --- |
| `keys` | *obligatorio* | El atajo. |
| `size` | `"sm"` | `"xs"` o `"sm"`. |
| `theme` | `None` | Tema a usar en lugar del actual (`pyzed.theme.current()`). |

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

### `ui.format_keys`

```python
format_keys(keys)
```

Separa un atajo en etiquetas por acorde: `format_keys("ctrl-shift-p") == [["Ctrl", "Shift", "P"]]`. El estilo se controla con `pyzed.ui.base.KEY_STYLE` (`"auto"`, `"symbols"` o `"words"`).

| Propiedad | Por defecto | Descripción |
| --- | --- | --- |
| `keys` | *obligatorio* | El atajo. |

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

### `ui.keys_text`

```python
keys_text(keys)
```

Un atajo como texto plano para una etiqueta o una línea de estado: `keys_text("ctrl-shift-p") == "Ctrl+Shift+P"` (`"⌃⇧P"` con los símbolos de macOS), los acordes separados por un espacio. Los tooltips, botones y menús toman `keys=` y dibujan las teclas, así que no escribas las teclas en su texto.

| Propiedad | Por defecto | Descripción |
| --- | --- | --- |
| `keys` | *obligatorio* | El atajo. |

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

## Relacionados

- [Pista de atajo](https://albakore.github.io/pyzed/es/library/keybinding-hint/): Una pista discreta tipo “Abrir archivo Ctrl P”.
- [Atajos](https://albakore.github.io/pyzed/es/library/shortcuts/): Una lista de atajos agrupada y con búsqueda.
- [Tooltip](https://albakore.github.io/pyzed/es/library/tooltip/): Una pista que aparece al pasar el ratón, con su atajo opcional.
