Ir al contenido

Menú

Un menú contextual flotante. Las entradas son ui.MenuItem(label, on_press, icon=, keys=, checked=, danger=, disabled=); ui.SEPARATOR dibuja una línea entre grupos y una cadena es una cabecera. Muéstralo con un Popover o una Capa.

ui.menu · Categoría: Listas y menús · Referencia completa →

MenúMenú
  • Para menús de clic derecho y las opciones de un botón dividido o de puntos suspensivos.
  • Marca las acciones destructivas con danger=True y ponlas al final.
from pyzed import ui
ui.menu([
ui.MenuItem("New file", on_new, icon="file-plus", keys="ctrl-n"),
ui.MenuItem("New folder", on_new_folder, icon="folder-plus"),
ui.SEPARATOR,
"EDIT",
ui.MenuItem("Copy path", on_copy, keys="ctrl-alt-c"),
ui.MenuItem("Soft wrap", on_wrap, checked=True),
ui.SEPARATOR,
ui.MenuItem("Delete", on_delete, icon="trash-2", danger=True),
])
Menú: SimpleMenú: Simple
Simple
Código
ui.menu([ui.MenuItem("Open", on_open), ui.MenuItem("Rename", on_rename),
ui.MenuItem("Duplicate", on_duplicate)], width=200)
Menú: icon=, keys=Menú: icon=, keys=
icon=, keys=
Código
ui.menu([ui.MenuItem("Copy", on_copy, icon="copy", keys="ctrl-c"),
ui.MenuItem("Paste", on_paste, icon="clipboard", keys="ctrl-v")], width=220)
Menú: checked=Menú: checked=
checked=
Código
ui.menu([ui.MenuItem("Soft wrap", on_wrap, checked=True),
ui.MenuItem("Minimap", on_minimap, checked=False)], width=200)
Menú: danger=TrueMenú: danger=True
danger=True
Código
ui.menu([ui.MenuItem("Rename", on_rename), ui.SEPARATOR,
ui.MenuItem("Delete", on_delete, icon="trash-2", danger=True)], width=200)
Menú: disabled=TrueMenú: disabled=True
disabled=True
Código
ui.menu([ui.MenuItem("Undo", on_undo, keys="ctrl-z"),
ui.MenuItem("Redo", on_redo, keys="ctrl-shift-z", disabled=True)], width=220)
Menú: Cabeceras y separadoresMenú: Cabeceras y separadores
Cabeceras y separadores
Código
ui.menu(["FILE", ui.MenuItem("New", on_new, keys="ctrl-n"), ui.SEPARATOR,
"EDIT", ui.MenuItem("Find", on_find, keys="ctrl-f")], width=220)
Menú: Descripciones y un submenúMenú: Descripciones y un submenú
Descripciones y un submenú
Código
ui.menu([ui.MenuItem("Share", on_press, icon="share", submenu=True),
ui.MenuItem("Rename", on_press, description="F2 also works")])
Menú: max_height=140Menú: max_height=140
max_height=140
Código
ui.menu([ui.MenuItem(f"Recent {i}", on_press) for i in range(10)], max_height=140)

Menú tiene 1 evento propios, en la tabla de abajo. 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 y Eventos de cada componente.

Evento El handler recibe Cuándo
on_press () Mensaje o callable que se envía al pulsar. None deshabilita el control.

El handler recibe es lo que Pyzed le pasa a tu función: () es nada. Cualquier handler también puede ser un mensaje (un valor que no se puede llamar), que va a update().

Los mismos eventos escritos de tres formas. Imperativa: métodos de la app que cambian self. Declarativa: los handlers producen mensajes y un único update() decide. Funcional: una función pura dibuja un estado inmutable y pide cambios con set_state(...). Mira Imperativo, declarativo y funcional.

class Files(pz.App):
def __init__(self):
self.wrap = True
self.log = []
def view(self):
return ui.menu([
ui.MenuItem("New file", lambda: self.log.append("new"), icon="file-plus", keys="ctrl-n"),
ui.MenuItem("Soft wrap", lambda: setattr(self, "wrap", not self.wrap), checked=self.wrap),
ui.SEPARATOR,
ui.MenuItem("Delete", lambda: self.log.append("delete"), icon="trash-2", danger=True),
])
menu(items, *, width=240, max_height=None, theme=None)

Un menú contextual flotante. Usa ui.SEPARATOR entre grupos; un texto suelto es un encabezado.

Propiedad Por defecto Descripción
items obligatorio Lista de MenuItem, ui.SEPARATOR o textos.
width 240 Ancho: píxeles, "fill", "shrink" o "fill:N" (proporción).
max_height None Desplaza un menú más alto que esto.
theme None Tema a usar en lugar del actual (pyzed.theme.current()).

Referencia completa →

@dataclass
class MenuItem(label, on_press=None, icon=None, keys=None, disabled=False, danger=False, checked=None, description=None, submenu=False)

Una entrada de ui.menu.

Propiedad Por defecto Descripción
label obligatorio Texto de la etiqueta.
icon None Nombre de un icono de Lucide (pyzed icons los lista).
keys None Atajo que se muestra al final, escrito como texto: "ctrl-s", "cmd-k cmd-s".
disabled False Lo deshabilita (ignora los clics).
danger False En rojo (acciones destructivas).
checked None Muestra una marca (True/False) o nada (None).
description None Una segunda línea atenuada.
submenu False Termina la fila con una flecha; abre el siguiente menú al lado en on_press.

Eventos: on_press (eventos).

Referencia completa →

Separador para ui.menu.

Referencia completa →