Ir al contenido

Selector de fecha

ui.DatePicker es un campo de texto para una fecha. El botón del calendario (o Alt+↓) abre un Calendario debajo, y el usuario también puede escribir la fecha: se lee con format al pulsar Enter o al salir del campo. Con el foco en el campo, ↑ y ↓ mueven un día y Re Pág/Av Pág un mes, sin abrir nada. on_change recibe un datetime.date (o None si se vacía el campo) en event.value.

ui.DatePicker · Categoría: Fechas y horas · Referencia completa →

Selector de fechaSelector de fecha
  • Para fechas de nacimiento, vencimientos, reservas y cualquier campo de formulario con una fecha.
  • format acepta tokens (DD/MM/YYYY, MMM D, YYYY, dddd D MMMM) o un patrón de strftime (%d.%m.%Y). Los nombres de meses y días siguen el idioma de la app.
  • min, max y disabled_dates (fechas, "weekend" o nombres de días) desactivan días.
  • Para dos fechas (desde–hasta), usa Selector de rango de fechas.
import pyzed as pz
from pyzed import ui
import datetime
class Booking(pz.App):
def __init__(self):
self.day = datetime.date.today()
def view(self):
return pz.column([
ui.field("Check-in", ui.DatePicker(value=self.day, format="ddd D MMM YYYY",
min=datetime.date.today(), disabled_dates=["sunday"],
on_change=lambda e: setattr(self, "day", e.value))),
ui.label(f"Booked for {ui.format_date(self.day, 'dddd D MMMM')}"),
], spacing=12, width=320)

Tokens: YYYY YY, MMMM MMM MM M, DD D, dddd ddd; [texto] se copia tal cual.

Selector de fecha: "YYYY-MM-DD"Selector de fecha: "YYYY-MM-DD"
"YYYY-MM-DD"
Código
ui.DatePicker(value="2026-10-22", on_change=on_change)
Selector de fecha: "DD/MM/YYYY"Selector de fecha: "DD/MM/YYYY"
"DD/MM/YYYY"
Código
ui.DatePicker(value="2026-10-22", format="DD/MM/YYYY", on_change=on_change)
Selector de fecha: "MMM D, YYYY"Selector de fecha: "MMM D, YYYY"
"MMM D, YYYY"
Código
ui.DatePicker(value="2026-10-22", format="MMM D, YYYY", on_change=on_change)
Selector de fecha: "ddd D MMM"Selector de fecha: "ddd D MMM"
"ddd D MMM"
Código
ui.DatePicker(value="2026-10-22", format="ddd D MMM", on_change=on_change)
Selector de fecha: placeholderSelector de fecha: placeholder
placeholder
Código
ui.DatePicker(placeholder="Pick a date", on_change=on_change)
Selector de fecha: invalid=TrueSelector de fecha: invalid=True
invalid=True
Código
ui.DatePicker(value="2026-10-22", invalid=True, on_change=on_change)
Selector de fecha: disabled=TrueSelector de fecha: disabled=True
disabled=True
Código
ui.DatePicker(value="2026-10-22", disabled=True, on_change=on_change)
Selector de fecha: AbiertoSelector de fecha: Abierto
Abierto
Código
ui.DatePicker(value="2026-10-22", on_change=on_change)

ui.format_date y ui.parse_date usan los mismos tokens que el campo, para tus propias etiquetas.

Selector de fecha: FormatosSelector de fecha: Formatos

Selector de fecha tiene 4 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.

Es un pz.Component, así que también lanza on_mount y on_unmount, y sus handlers reciben un pz.Event cuyo value trae el dato.

Evento De El handler recibe Cuándo
on_change ui.DatePicker (event) Recibe event.value: un datetime.date o None.
on_open ui.DatePicker (event) Se abrió el calendario.
on_close ui.DatePicker (event) Se cerró el calendario.
on_dismiss pz.popup () Mensaje o función que se envía con un clic fuera o Escape.

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.

import datetime
class Booking(pz.App):
def __init__(self):
self.day = datetime.date(2026, 10, 22)
def changed(self, event): # on_change: event.value is a datetime.date (or None)
self.day = event.value
def view(self):
return pz.column([
ui.DatePicker(value=self.day, format="DD/MM/YYYY", on_change=self.changed),
ui.label(ui.format_date(self.day, "dddd D MMMM") or "No date"),
], spacing=8, width=240)
class DatePicker

Un componente: un campo de fecha que abre un calendario debajo, en una ventana emergente que ningún panel recorta. Se puede escribir en format (Enter o salir del campo lo lee); tras un clic, ↑/↓ mueven la fecha un día y Re Pág/Av Pág un mes sin abrir nada, Alt+↓ abre el calendario y Escape lo cierra. Ver la página Selector de fecha.

Propiedad Por defecto Descripción
value None La fecha (datetime.date, texto ISO o None).
format "YYYY-MM-DD" Cómo se escribe: "DD/MM/YYYY", "MMM D, YYYY"… (ver format_date).
placeholder "" Pista mientras está vacío (por defecto, el formato).
min None La primera fecha.
max None La última fecha.
disabled_dates () Días que no se pueden elegir (como en Calendar).
first_weekday "monday" "monday", "sunday" o "saturday".
week_numbers False Muestra los números de semana en el calendario.
clearable True Muestra una x que lo vacía.
today_button True Añade un enlace Hoy al calendario.
disabled False Lo atenúa.
invalid False Pinta el borde con el color de error.

Eventos: on_change, on_open, on_close (eventos).

Referencia completa →

format_date(value, fmt='YYYY-MM-DD', *, language=None)

Escribe una fecha con un patrón de marcas: YYYY 2026, YY 26, MMMM octubre, MMM oct, MM 10, M 10, DD 05, D 5, dddd lunes, ddd lun, HH/hh horas, mm minutos, ss segundos, A AM/PM y [texto] tal cual. Un patrón con % es de strftime. Los nombres de meses y días siguen el idioma de pyzed.i18n.

Propiedad Por defecto Descripción
value obligatorio Una fecha, un datetime, texto ISO o None (da "").
fmt "YYYY-MM-DD" El patrón.
language None Un idioma para los nombres en lugar del actual.

Referencia completa →

parse_date(text, fmt='YYYY-MM-DD', *, language=None)

Lee una fecha escrita con un patrón de format_date (meses en el idioma actual o en inglés); el ISO YYYY-MM-DD siempre funciona. Devuelve None si el texto no es una fecha.

Propiedad Por defecto Descripción
text obligatorio El texto.
fmt "YYYY-MM-DD" El patrón.
language None El idioma de los nombres.

Referencia completa →

popup(base, content=None, *, on_dismiss=None, side='bottom', align='start', gap=4.0)

Muestra content encima de todo junto a base, como el menú de un desplegable: no lo recortan los paneles donde está base, se pasa al otro lado cuando no cabe y se queda dentro de la ventana. Un clic fuera (y fuera de base) o Escape llama a on_dismiss. Con content=None solo se muestra base. Los selectores de fecha abren su calendario con él.

Propiedad Por defecto Descripción
base obligatorio El widget al que pertenece (un campo, un botón).
content None Lo que se abre (un panel, un menú), o None mientras está cerrado.
side "bottom" "bottom", "top", "right" o "left" de base.
align "start" "start", "center" o "end": cómo se alinea con base.
gap 4.0 Espacio entre base y el contenido.

Eventos: on_dismiss (eventos).

Referencia completa →