Ir al contenido

Campo de texto

Un campo de texto de una línea con el estilo del tema. Es controlado: muestra value y avisa de cada tecla a on_input, así que guardas el texto en tu estado y lo devuelves en view(). on_submit se ejecuta al pulsar Enter.

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

Campo de textoCampo de texto
Campos con validación: el email se comprueba mientras escribes.
  • Para nombres, rutas, búsquedas, correos y contraseñas (secure=True).
  • Para texto de varias líneas o código usa el Editor.
  • Dale un id para enfocarlo desde código con pz.Command.focus(id).
import pyzed as pz
from pyzed import ui
class Form(pz.App):
def __init__(self):
self.name = ""
def view(self):
return ui.input(self.name, lambda text: setattr(self, "name", text),
placeholder="Project name", on_submit=self.create, id="name")
def on_start(self):
return pz.Command.focus("name")
Campo de texto: placeholder=Campo de texto: placeholder=
placeholder=
Código
ui.input("", on_input, placeholder="Project name", width=260)
Campo de texto: Con valorCampo de texto: Con valor
Con valor
Código
ui.input("Pyzed", on_input, width=260)
Campo de texto: icon="mail"Campo de texto: icon="mail"
icon="mail"
Código
ui.input("ada@example.com", on_input, icon="mail", width=260)
Campo de texto: secure=TrueCampo de texto: secure=True
secure=True
Código
ui.input("hunter2", on_input, secure=True, icon="lock", width=260)
Campo de texto: size="sm"Campo de texto: size="sm"
size="sm"
Código
ui.input("Small", on_input, size="sm", width=260)
Campo de texto: size="md"Campo de texto: size="md"
size="md"
Código
ui.input("Medium", on_input, size="md", width=260)
Campo de texto: size="lg"Campo de texto: size="lg"
size="lg"
Código
ui.input("Large", on_input, size="lg", width=260)
Campo de texto: borderless=TrueCampo de texto: borderless=True
borderless=True
Código
ui.input("Borderless", on_input, borderless=True, width=260)
Campo de texto: mono=TrueCampo de texto: mono=True
mono=True
Código
ui.input("SELECT * FROM users", on_input, mono=True, width=260)
Campo de texto: Solo lectura (sin on_input)Campo de texto: Solo lectura (sin on_input)
Solo lectura (sin on_input)
Código
ui.input("Can't edit me", width=260)

Muestra los errores con error= de Campo de formulario, junto al campo.

Campo de texto: Con un errorCampo de texto: Con un error
Con un error
Código
ui.field("Email", ui.input("ada@", on_input, width=220), error="Enter a valid email")

El foco, la pérdida de foco y las teclas vienen de los eventos comunes: .on(focus=..., blur=..., key_down=...).

Campo de texto: disabled=TrueCampo de texto: disabled=True
disabled=True
Código
ui.input("Locked", on_input, disabled=True, width=220)
Campo de texto: readonly=TrueCampo de texto: readonly=True
readonly=True
Código
ui.input("Copy me, not edit me", on_input, readonly=True, width=220)
Campo de texto: invalid=TrueCampo de texto: invalid=True
invalid=True
Código
ui.input("ada@", on_input, invalid=True, width=220)
Campo de texto: on_clear=Campo de texto: on_clear=
on_clear=
Código
ui.input("pyzed", on_input, on_clear=on_clear, width=220)
Campo de texto: max_length=8Campo de texto: max_length=8
max_length=8
Código
ui.input("12345678", on_input, max_length=8, width=220)
Campo de texto: align="center"Campo de texto: align="center"
align="center"
Código
ui.input("centered", on_input, align="center", width=220)

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

Campo de texto: pz.text_inputCampo de texto: pz.text_input
pz.text_input
Código
pz.text_input("", placeholder="pz.text_input", on_input=on_input, width=260, padding=8,
radius=8, border_color="#c678dd", focus_border_color="#e5c07b")

Campo de texto 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_input ui.input, pz.text_input (text) Callable que recibe el texto nuevo en cada pulsación.
on_submit ui.input, pz.text_input () Mensaje o callable que se envía al pulsar Enter.
on_clear ui.input () Muestra una ✕ mientras hay texto; se envía al pulsarla.

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 SignUp(pz.App):
def __init__(self):
self.email = ""
self.sent = False
def set_email(self, text): # on_input: the new text on every keystroke
self.email, self.sent = text, False
def send(self): # on_submit: Enter
self.sent = "@" in self.email
def view(self):
return pz.column([
ui.input(self.email, self.set_email, placeholder="Email", icon="mail", id="email",
on_submit=self.send, on_clear=lambda: self.set_email(""),
invalid=bool(self.email) and "@" not in self.email),
ui.label("Thanks!" if self.sent else "Press Enter to send"),
], spacing=8, width=320)
def on_start(self):
return pz.Command.focus("email")
input(
value,
on_input=None,
*,
placeholder='',
icon=None,
on_submit=None,
on_clear=None,
id=None,
size='md',
secure=False,
width='fill',
borderless=False,
mono=False,
disabled=False,
readonly=False,
invalid=False,
max_length=None,
align='start',
theme=None,
)

Un campo de texto. El foco, la pérdida de foco y las teclas vienen de los eventos comunes: .on(focus=..., blur=..., key_down=...).

Propiedad Por defecto Descripción
value obligatorio Texto actual.
placeholder "" Texto de ayuda cuando está vacío.
icon None Nombre de un icono de Lucide (pyzed icons los lista).
id None Identificador estable para enfocarlo o desplazarlo con un Command.
size "md" "sm", "md" o "lg".
secure False Oculta el texto.
width "fill" Ancho: píxeles, "fill", "shrink" o "fill:N" (proporción).
borderless False Sin borde ni fondo (como en la paleta de comandos).
mono False Usa la fuente monoespaciada (IBM Plex Mono).
disabled False Lo atenúa e ignora lo que se escribe.
readonly False Se puede seleccionar y copiar, pero no cambiar.
invalid False Pinta el borde con el color de error.
max_length None Ignora los cambios más largos que esto.
align "start" Alineación del texto: "start", "center" o "end".
theme None Tema a usar en lugar del actual (pyzed.theme.current()).

Eventos: on_input, on_submit, on_clear (eventos).

Referencia completa →

text_input(
value,
*,
placeholder='',
on_input=None,
on_submit=None,
id=None,
size=None,
font=None,
padding=None,
width=None,
secure=False,
icon=None,
icon_size=None,
bg=None,
border_color=None,
hover_border_color=None,
focus_border_color=None,
border_width=None,
radius=None,
color=None,
placeholder_color=None,
selection_color=None,
icon_color=None,
align_x=None,
)

Un campo de texto controlado: muestra value y te avisa de los cambios con on_input. Para el campo con tema usa ui.input.

Propiedad Por defecto Descripción
value obligatorio Texto actual.
placeholder "" Texto de ayuda cuando está vacío.
id None Identificador estable para enfocarlo o desplazarlo con un Command.
size None Tamaño de la fuente.
font None Familia de la fuente.
padding None Relleno interior: 8, (vertical, horizontal) o (arriba, derecha, abajo, izquierda).
width None Ancho: píxeles, "fill", "shrink" o "fill:N" (proporción).
secure False Oculta el texto (contraseñas).
icon None Carácter del icono (usa pyzed.icons.glyph(nombre)).
icon_size None Tamaño del icono.
bg None Color de fondo ("#rrggbb[aa]", (r, g, b[, a]) o "transparent").
border_color None Color del borde.
hover_border_color None Color del borde al pasar el ratón.
focus_border_color None Color del borde con el foco.
border_width None Grosor del borde en píxeles.
radius None Radio de las esquinas: un número o (sup_izq, sup_der, inf_der, inf_izq).
color None Color del texto o del icono.
placeholder_color None Color del placeholder.
selection_color None Color de la selección.
icon_color None Color del icono.
align_x None Alineación horizontal: "start"/"left", "center", "end"/"right".

Eventos: on_input, on_submit (eventos).

Referencia completa →