Confirmación
Hace una pregunta de sí o no. danger=True pinta de rojo el botón de confirmar; confirm_label y cancel_label cambian el texto de los botones.
ui.confirm · Categoría: Diálogos · Referencia completa →


ui.dialog_layer(main_view(), ui.confirm( "Delete notes.py? This can't be undone.", on_delete, on_cancel, title="Delete file", danger=True, confirm_label="Delete", width=360,))Cuándo usarlo
Sección titulada «Cuándo usarlo»- Antes de acciones destructivas o irreversibles: borrar, sobrescribir, descartar.
from pyzed import ui
ui.dialog_layer(main_view(), ui.confirm( "Delete notes.py? This can't be undone.", on_delete, on_cancel, title="Delete file", danger=True, confirm_label="Delete", width=360,))Variantes
Sección titulada «Variantes»

Código
ui.confirm("Close all tabs?", on_confirm, on_cancel, title="Close tabs", width=320)

danger=TrueCódigo
ui.confirm("Delete notes.py?", on_delete, on_cancel, title="Delete file", danger=True, confirm_label="Delete", width=320)

kind="warning"Código
ui.confirm("Overwrite the existing file?", on_confirm, on_cancel, kind="warning", width=320)

confirm_label=, cancel_label=Código
ui.confirm("Push 3 commits to main?", on_push, on_cancel, confirm_label="Push", cancel_label="Not now", width=320)Eventos
Sección titulada «Eventos»Confirmación 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.
| Evento | El handler recibe | Cuándo |
|---|---|---|
on_confirm |
() |
El botón de confirmar. |
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.files = ["notes.py", "todo.txt"] self.deleting = "notes.py" # the file waiting for an answer
def delete(self): # on_confirm self.files.remove(self.deleting) self.deleting = None
def view(self): dialog = None if self.deleting: dialog = ui.confirm(f"Delete {self.deleting}?", self.delete, lambda: setattr(self, "deleting", None), # on_cancel title="Delete file", danger=True, confirm_label="Delete") return ui.dialog_layer(main_view(), dialog)from dataclasses import dataclass
@dataclassclass Delete: name: str
class Files(pz.App): files = ["notes.py", "todo.txt"] deleting = "notes.py"
def update(self, message): match message: case Delete(name): self.files = [f for f in self.files if f != name] self.deleting = None case "cancel": self.deleting = None
def view(self): dialog = ui.confirm(f"Delete {self.deleting}?", Delete(self.deleting), "cancel", danger=True) \ if self.deleting else None return ui.dialog_layer(main_view(), dialog)from dataclasses import dataclass
@dataclass(frozen=True)class State: files: tuple = ("notes.py", "todo.txt") deleting: str = "notes.py"
def view(state, set_state): if not state.deleting: return main_view() keep = tuple(f for f in state.files if f != state.deleting) return ui.dialog_layer(main_view(), ui.confirm( f"Delete {state.deleting}?", lambda: set_state(files=keep, deleting=""), lambda: set_state(deleting=""), danger=True))Propiedades y API
Sección titulada «Propiedades y API»ui.confirm
Sección titulada «ui.confirm»confirm( message, on_confirm, on_cancel, *, title=None, confirm_label=None, cancel_label=None, danger=False, kind=None, width=420, theme=None,)Hace una pregunta de sí o no.
| Propiedad | Por defecto | Descripción |
|---|---|---|
message |
obligatorio | Texto o widget. |
title |
None |
Título. |
confirm_label |
None |
Texto del botón de confirmar. |
cancel_label |
None |
Texto del botón de cancelar. |
danger |
False |
Pinta el botón de rojo y lo llama Eliminar. |
kind |
None |
Añade un icono, como en alert. |
width |
420 |
Ancho: píxeles, "fill", "shrink" o "fill:N" (proporción). |
theme |
None |
Tema a usar en lugar del actual (pyzed.theme.current()). |
Eventos: on_confirm, on_cancel (eventos).