Pregunta
Pide una línea de texto: un campo controlado más Cancelar y Aceptar. Enter o el botón llaman a on_submit.
ui.prompt · Categoría: Diálogos · Referencia completa →


ui.dialog_layer(main_view(), ui.prompt( "Rename", "notes.py", on_input, on_submit, on_cancel, message="New name for the file:", width=360,))Cuándo usarlo
Sección titulada «Cuándo usarlo»- Para nombres rápidos: renombrar un archivo, nombrar una rama, guardar una vista.
import pyzed as pzfrom pyzed import ui
class Files(pz.App): def __init__(self): self.new_name = None
def view(self): dialog = None if self.new_name is not None: dialog = ui.prompt("Rename", self.new_name, lambda t: setattr(self, "new_name", t), self.rename, lambda: setattr(self, "new_name", None)) return ui.dialog_layer(self.main_view(), dialog)Variantes
Sección titulada «Variantes»Contenido
Sección titulada «Contenido»

Código
ui.prompt("New branch", "", on_input, on_submit, on_cancel, placeholder="feature/…", width=340)

message=Código
ui.prompt("Rename", "notes.py", on_input, on_submit, on_cancel, message="New name for the file:", width=340)

submit_label=Código
ui.prompt("Save view", "My view", on_input, on_submit, on_cancel, submit_label="Save", width=340)Eventos
Sección titulada «Eventos»Pregunta 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 | El handler recibe | Cuándo |
|---|---|---|
on_input |
(text) |
Recibe cada edición. |
on_submit |
() |
Enter o el botón de aceptar. |
on_cancel |
() |
Cancelar, el icono de cerrar. |
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().
Manejar los eventos
Sección titulada «Manejar los eventos»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 Files(pz.App): def __init__(self): self.name = "notes.py" self.new_name = "notes.py" # None while the dialog is closed
def rename(self): # on_submit: Enter or the button self.name, self.new_name = self.new_name, None
def view(self): dialog = None if self.new_name is not None: dialog = ui.prompt("Rename", self.new_name, lambda text: setattr(self, "new_name", text), # on_input self.rename, lambda: setattr(self, "new_name", None), # on_cancel message="New name for the file:") return ui.dialog_layer(main_view(), dialog)from dataclasses import dataclass
@dataclassclass Typed: text: str
class Files(pz.App): name, new_name = "notes.py", "notes.py"
def update(self, message): match message: case Typed(text): self.new_name = text case "rename": self.name, self.new_name = self.new_name, None case "cancel": self.new_name = None
def view(self): dialog = ui.prompt("Rename", self.new_name, Typed, "rename", "cancel") \ if self.new_name is not None else None return ui.dialog_layer(main_view(), dialog)from dataclasses import dataclass
@dataclass(frozen=True)class State: name: str = "notes.py" draft: str = "notes.py" renaming: bool = True
def view(state, set_state): if not state.renaming: return ui.label(state.name) return ui.dialog_layer(main_view(), ui.prompt( "Rename", state.draft, lambda text: set_state(draft=text), lambda: set_state(name=state.draft, renaming=False), lambda: set_state(renaming=False)))Propiedades y API
Sección titulada «Propiedades y API»ui.prompt
Sección titulada «ui.prompt»prompt( title, value, on_input, on_submit, on_cancel, *, message=None, placeholder='', submit_label=None, cancel_label=None, id=None, width=440, theme=None,)Pide una línea de texto.
| Propiedad | Por defecto | Descripción |
|---|---|---|
title |
obligatorio | Título. |
value |
obligatorio | Texto actual. |
message |
None |
Texto sobre el campo. |
placeholder |
"" |
Texto de ayuda cuando está vacío. |
submit_label |
None |
Texto del botón de aceptar. |
cancel_label |
None |
Texto del botón de cancelar. |
id |
None |
Id del campo (para Command.focus). |
width |
440 |
Ancho: píxeles, "fill", "shrink" o "fill:N" (proporción). |
theme |
None |
Tema a usar en lugar del actual (pyzed.theme.current()). |
Eventos: on_input, on_submit, on_cancel (eventos).