Ir al contenido

Formularios

Controles de formulario

class Ajustes(pz.App):
def __init__(self):
self.nombre = ""
self.query = ""
self.autosave = True
self.formatear = False
self.fuente = 0.6
self.modo = "Editor"
def view(self):
return pz.column([
ui.input(self.nombre, lambda t: setattr(self, "nombre", t), placeholder="Nombre del proyecto"),
ui.search_input(self.query, lambda t: setattr(self, "query", t)),
ui.field("Autoguardado", ui.switch(self.autosave, lambda v: setattr(self, "autosave", v)),
description="Guarda al cambiar de pestaña"),
ui.field("Formato al guardar", ui.checkbox(self.formatear, lambda v: setattr(self, "formatear", v))),
ui.field("Tamaño de fuente",
pz.container(ui.slider(self.fuente, lambda v: setattr(self, "fuente", v)), width=160)),
ui.segmented(["Editor", "Terminal", "Ambos"], self.modo, lambda m: setattr(self, "modo", m)),
ui.progress(0.65),
], spacing=12, padding=20, width=420)

Los campos son controlados: muestran value y te avisan de cada cambio con on_input. Guarda el texto en tu estado y vuelve a pasarlo en view().

ui.input(self.email, self.set_email, placeholder="tu@correo.com", icon="mail",
on_submit=self.enviar, id="email")
ui.input(self.clave, self.set_clave, secure=True) # contraseña
ui.input(self.query, self.set_query, borderless=True, size="lg")

Para enfocar un campo desde el código, dale un id y devuelve Command.focus("email").

on_toggle recibe el nuevo bool:

ui.switch(self.wifi, lambda on: setattr(self, "wifi", on), label="Wi-Fi")
ui.checkbox(self.acepto, lambda v: setattr(self, "acepto", v), label="Acepto los términos")
ui.slider(self.volumen, self.set_volumen, min=0, max=100, step=1)
ui.progress(self.descargado, max=self.total, tint="success", height=6)

Botones mutuamente excluyentes, con uno seleccionado. on_select recibe la opción elegida:

ui.segmented(["Día", "Semana", "Mes"], self.vista, lambda v: setattr(self, "vista", v))

ui.field(título, control, description=...) alinea un título a la izquierda y el control a la derecha, como una pantalla de ajustes.

Referencia completa: Formularios.