Ir al contenido

Select

Un desplegable con el estilo del tema. Las opciones se muestran con str(), así que valen cadenas, enums o dataclasses, y on_select recibe el objeto elegido.

ui.select · Categoría: Formularios · Referencia completa →

SelectSelect
  • Para elegir una entre muchas opciones cuando no caben todas (idioma, tema, codificación).
  • Con dos a cinco opciones cortas, Segmentado o un Grupo de radios las muestran de un vistazo.
import pyzed as pz
from pyzed import ui
class Settings(pz.App):
def __init__(self):
self.language = "Python"
def view(self):
return ui.select(["Python", "Rust", "TypeScript"], self.language,
lambda value: setattr(self, "language", value), width=180)
Select: Con valorSelect: Con valor
Con valor
Código
ui.select(["Python", "Rust", "TypeScript"], "Rust", on_select, width=200)
Select: placeholder=Select: placeholder=
placeholder=
Código
ui.select(["UTF-8", "Latin-1"], None, on_select, placeholder="Encoding…", width=200)
Select: Solo lectura (sin on_select)Select: Solo lectura (sin on_select)
Solo lectura (sin on_select)
Código
ui.select(["One Dark"], "One Dark", width=200)
Select: size="sm"Select: size="sm"
size="sm"
Código
ui.select(["Python", "Rust"], "Python", on_select, size="sm", width=200)
Select: size="md"Select: size="md"
size="md"
Código
ui.select(["Python", "Rust"], "Python", on_select, size="md", width=200)
Select: size="lg"Select: size="lg"
size="lg"
Código
ui.select(["Python", "Rust"], "Python", on_select, size="lg", width=200)

on_open y on_close se ejecutan al abrir y cerrar el menú.

Select: disabled=TrueSelect: disabled=True
disabled=True
Código
ui.select(["One Dark"], "One Dark", on_select, disabled=True, width=200)
Select: invalid=TrueSelect: invalid=True
invalid=True
Código
ui.select(["UTF-8", "Latin-1"], None, on_select, placeholder="Encoding…", invalid=True, width=200)

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

Select: pz.pick_listSelect: pz.pick_list
pz.pick_list
Código
pz.pick_list(["Small", "Medium", "Large"], "Medium", on_select, width=200,
bg="#2b2140", color="#e9d5ff", border_color="#c678dd", radius=8)

Select tiene 3 eventos 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 De El handler recibe Cuándo
on_select ui.select, pz.pick_list (item) Callable que recibe el elemento elegido.
on_open ui.select, pz.pick_list () Se envía al abrir el menú.
on_close ui.select, pz.pick_list () Se envía al cerrar el menú.

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 Settings(pz.App):
def __init__(self):
self.language = "Python"
self.open = False
def view(self):
return pz.column([
ui.select(["Python", "Rust", "TypeScript"], self.language,
lambda value: setattr(self, "language", value), # on_select: the option
on_open=lambda: setattr(self, "open", True),
on_close=lambda: setattr(self, "open", False), width=180),
ui.muted("Choosing…" if self.open else f"Language: {self.language}"),
], spacing=8)
select(
options,
selected=None,
on_select=None,
*,
placeholder='Select…',
width=None,
size='md',
disabled=False,
invalid=False,
on_open=None,
on_close=None,
id=None,
theme=None,
)

Un desplegable con el estilo del tema. Las opciones se muestran con str(), así que sirven textos, enums, dataclasses o modelos de base de datos; on_select recibe el objeto elegido, no su texto.

Propiedad Por defecto Descripción
options obligatorio Lista de opciones.
selected None Opción actual.
placeholder "Select…" Texto de ayuda cuando está vacío.
width None Ancho: píxeles, "fill", "shrink" o "fill:N" (proporción).
size "md" "sm", "md" o "lg".
disabled False Lo atenúa.
invalid False Pinta el borde con el color de error.
id None Identificador estable para enfocarlo o desplazarlo con un Command.
theme None Tema a usar en lugar del actual (pyzed.theme.current()).

Eventos: on_select, on_open, on_close (eventos).

Referencia completa →

pick_list(
options,
selected=None,
on_select=None,
*,
on_open=None,
on_close=None,
placeholder=None,
width=None,
padding=None,
text_size=None,
font=None,
handle=None,
handle_size=12.0,
menu_height=None,
bg=None,
color=None,
placeholder_color=None,
handle_color=None,
border_color=None,
hover_border_color=None,
radius=None,
menu_bg=None,
menu_color=None,
menu_border_color=None,
selected_bg=None,
selected_color=None,
focus_border_color=None,
id=None,
)

Un desplegable para elegir una de options. on_select(opción) recibe la elegida. Para el desplegable con tema usa ui.select. Toma el foco del teclado como un campo de texto (un clic, Tab o Command.focus(id)) y lo mantiene después de elegir: ↑/↓ eligen la opción anterior o la siguiente sin abrirlo, Inicio/Fin la primera y la última y al escribir salta a una opción; Enter, Espacio, Alt+↓ o F4 abren el menú, donde ↑/↓ se mueven, Enter elige y Esc cierra.

Propiedad Por defecto Descripción
options obligatorio Lista de opciones.
selected None Opción actual.
placeholder None Texto de ayuda cuando está vacío.
width None Ancho: píxeles, "fill", "shrink" o "fill:N" (proporción).
padding None Relleno interior: 8, (vertical, horizontal) o (arriba, derecha, abajo, izquierda).
text_size None Tamaño del texto.
font None Familia de la fuente.
handle None Carácter del icono de la flecha.
handle_size 12.0 Tamaño de la flecha.
menu_height None Alto máximo del menú.
bg None Color de fondo ("#rrggbb[aa]", (r, g, b[, a]) o "transparent").
color None Color del texto o del icono.
placeholder_color None Color del placeholder.
handle_color None Color de la flecha.
border_color None Color del borde.
hover_border_color None Color del borde al pasar el ratón.
radius None Radio de las esquinas: un número o (sup_izq, sup_der, inf_der, inf_izq).
menu_bg None Fondo del menú.
menu_color None Texto del menú.
menu_border_color None Borde del menú.
selected_bg None Fondo de la opción resaltada.
selected_color None Texto de la opción resaltada.
focus_border_color None Color del borde mientras tiene el foco del teclado.
id None Identificador estable para enfocarlo o desplazarlo con un Command.

Eventos: on_select, on_open, on_close (eventos).

Referencia completa →