Ir al contenido

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 →

PreguntaPregunta
  • Para nombres rápidos: renombrar un archivo, nombrar una rama, guardar una vista.
import pyzed as pz
from 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)
Pregunta: Solo títuloPregunta: Solo título
Solo título
Código
ui.prompt("New branch", "", on_input, on_submit, on_cancel, placeholder="feature/…", width=340)
Pregunta: message=Pregunta: message=
message=
Código
ui.prompt("Rename", "notes.py", on_input, on_submit, on_cancel, message="New name for the file:",
width=340)
Pregunta: submit_label=Pregunta: submit_label=
submit_label=
Código
ui.prompt("Save view", "My view", on_input, on_submit, on_cancel, submit_label="Save", width=340)

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().

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)
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).

Referencia completa →