Ir al contenido

Calendario

ui.Calendar muestra uno o varios meses. mode elige un solo día ("single"), un rango ("range", dos clics) o cualquier número de días ("multiple", cada clic marca o desmarca uno). La cabecera cambia a una cuadrícula de meses y luego de años para saltar lejos, y las flechas del teclado mueven el día enfocado (Re Pág/Av Pág por meses, Enter lo elige). Los selectores de esta sección abren uno de estos en una ventana flotante.

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

CalendarioCalendario
  • En un panel lateral o un tablero, donde el calendario se queda a la vista.
  • first_weekday ("monday", "sunday"…) y week_numbers=True siguen las costumbres locales.
  • Dentro de un campo de formulario, usa Selector de fecha.
import pyzed as pz
from pyzed import ui
class Planner(pz.App):
def __init__(self):
self.days = []
def view(self):
return pz.row([
ui.Calendar(value=self.days, mode="multiple", week_numbers=True,
on_change=lambda e: setattr(self, "days", e.value)),
pz.column([ui.label(ui.format_date(d, "ddd D MMM")) for d in self.days], spacing=4),
], spacing=16)
Calendario: mode="single"Calendario: mode="single"
mode="single"
Código
ui.Calendar(value="2026-10-22", on_change=on_change)
Calendario: mode="range"Calendario: mode="range"
mode="range"
Código
ui.Calendar(value=("2026-10-05", "2026-10-14"), mode="range", on_change=on_change)
Calendario: mode="multiple"Calendario: mode="multiple"
mode="multiple"
Código
ui.Calendar(value=["2026-10-06", "2026-10-13", "2026-10-20", "2026-10-27"], mode="multiple", on_change=on_change)
Calendario: week_numbers=TrueCalendario: week_numbers=True
week_numbers=True
Código
ui.Calendar(value="2026-10-22", week_numbers=True, first_weekday="monday", on_change=on_change)
Calendario: first_weekday="sunday"Calendario: first_weekday="sunday"
first_weekday="sunday"
Código
ui.Calendar(value="2026-10-22", first_weekday="sunday", on_change=on_change)
Calendario: min, max, disabledCalendario: min, max, disabled
min, max, disabled
Código
ui.Calendar(value="2026-10-22", min="2026-10-08", max="2026-10-28", disabled=["weekend"], on_change=on_change)
Calendario: show_outside=FalseCalendario: show_outside=False
show_outside=False
Código
ui.Calendar(value="2026-10-22", show_outside=False, today_button=True, on_change=on_change)

Un clic en el título pasa a los meses, y otro a los años.

Calendario: months=2Calendario: months=2
months=2
Código
ui.Calendar(value=("2026-10-26", "2026-11-04"), mode="range", months=2, on_change=on_change)
Calendario: set_view("months")Calendario: set_view("months")
set_view("months")
Código
ui.Calendar(value="2026-10-22", on_change=on_change)
Calendario: set_view("years")Calendario: set_view("years")
set_view("years")
Código
ui.Calendar(value="2026-10-22", on_change=on_change)

Calendario tiene 2 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 El handler recibe Cuándo
on_change (event) Recibe event.value (una fecha, una tupla o una lista).
on_month (event) Recibe event.value, el (año, mes) que se muestra.

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 Planner(pz.App):
def __init__(self):
self.days = []
def changed(self, event): # on_change: the list of days ("multiple" mode)
self.days = event.value
def view(self):
return pz.row([
ui.Calendar(value=self.days, mode="multiple", on_change=self.changed),
ui.label(f"{len(self.days)} days"),
], spacing=16)
class Calendar

Un componente con un mes donde elegir un día (mode="single"), un rango ("range": el primer clic lo empieza y el segundo lo termina) o varios días ("multiple"). El título abre una cuadrícula de meses y después de años. Tras un clic recibe el teclado: las flechas mueven, Enter elige y Re Pág/Av Pág cambian de mes. Ver la página Calendario.

Propiedad Por defecto Descripción
value None Una fecha (datetime.date o "2026-10-22"), un par (inicio, fin) o una lista de fechas, según mode.
mode "single" "single", "range" o "multiple".
min None El primer día que se puede elegir.
max None El último día que se puede elegir.
disabled () Días que no se pueden elegir: fechas, nombres de día en inglés ("sunday") o "weekends".
first_weekday "monday" "monday", "sunday" o "saturday".
months 1 Meses que se ven uno al lado del otro.
week_numbers False Muestra el número de semana ISO de cada fila.
show_outside True Muestra los días de los meses vecinos.
today_button False Añade un enlace Hoy.

Eventos: on_change, on_month (eventos).

Referencia completa →