Ir al contenido

Botón dividido

Un botón con un chevron separado a la derecha. on_press ejecuta la acción principal y on_menu suele abrir un ui.menu dentro de un ui.popover con las alternativas.

ui.split_button · Categoría: Acciones · Referencia completa →

Botón divididoBotón dividido
  • Cuando una acción es la habitual pero hay algunas variantes (Ejecutar / Ejecutar con argumentos).
  • Evítalo si las opciones son igual de importantes: usa un Select.
import pyzed as pz
from pyzed import ui
class Runner(pz.App):
def __init__(self):
self.menu_open = False
def view(self):
button = ui.split_button("Run", self.run, lambda: setattr(self, "menu_open", True), icon="play")
menu = ui.menu([ui.MenuItem("Run with arguments…", self.run_args),
ui.MenuItem("Debug", self.debug, icon="bug")]) if self.menu_open else None
return ui.popover(button, menu, y=32, on_dismiss=lambda: setattr(self, "menu_open", False))
Botón dividido: variant="filled"Botón dividido: variant="filled"
variant="filled"
Código
ui.split_button("Run", on_run, on_menu, icon="play")
Botón dividido: variant="ghost"Botón dividido: variant="ghost"
variant="ghost"
Código
ui.split_button("Run", on_run, on_menu, icon="play", variant="ghost")
Botón dividido: variant="outline"Botón dividido: variant="outline"
variant="outline"
Código
ui.split_button("Run", on_run, on_menu, icon="play", variant="outline")
Botón dividido: variant="solid"Botón dividido: variant="solid"
variant="solid"
Código
ui.split_button("Deploy", on_deploy, on_menu, icon="rocket", variant="solid")
Botón dividido: size="sm"Botón dividido: size="sm"
size="sm"
Código
ui.split_button("Build", on_build, on_menu, size="sm")
Botón dividido: size="md"Botón dividido: size="md"
size="md"
Código
ui.split_button("Build", on_build, on_menu, size="md")
Botón dividido: size="lg"Botón dividido: size="lg"
size="lg"
Código
ui.split_button("Build", on_build, on_menu, size="lg")
Botón dividido: Solo textoBotón dividido: Solo texto
Solo texto
Código
ui.split_button("Merge", on_merge, on_menu)
Botón dividido: icon="git-merge"Botón dividido: icon="git-merge"
icon="git-merge"
Código
ui.split_button("Merge", on_merge, on_menu, icon="git-merge")
Botón dividido: tint="success"Botón dividido: tint="success"
tint="success"
Código
ui.split_button("Deploy", on_press, on_menu, tint="success")
Botón dividido: disabled=TrueBotón dividido: disabled=True
disabled=True
Código
ui.split_button("Run", on_press, on_menu, disabled=True)

Botón dividido 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_press () Mensaje o callable que se envía al pulsar. None deshabilita el control.
on_menu () Mensaje o callable del botón del menú.

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 Runner(pz.App):
def __init__(self):
self.menu_open = False
self.last = "nothing yet"
def run(self, how="run"):
self.last, self.menu_open = how, False
def view(self):
button = ui.split_button("Run", self.run, # on_press: the main action
lambda: setattr(self, "menu_open", True), # on_menu: the arrow
icon="play")
menu = ui.menu([ui.MenuItem("Debug", lambda: self.run("debug"), icon="bug")])
return pz.column([
ui.popover(button, menu if self.menu_open else None, y=32,
on_dismiss=lambda: setattr(self, "menu_open", False)),
ui.label(f"Last: {self.last}"),
], spacing=8)
split_button(
content,
on_press=None,
on_menu=None,
*,
icon=None,
variant='filled',
tint=None,
size='md',
disabled=False,
tooltip=None,
theme=None,
)

Un botón con una flecha aparte para más opciones. on_press ejecuta la acción principal y on_menu normalmente abre un ui.menu en un ui.popover.

Propiedad Por defecto Descripción
content obligatorio Texto del botón.
icon None Nombre de un icono de Lucide (pyzed icons los lista).
variant "filled" Como en ui.button.
tint None Como en ui.button.
size "md" "xs", "sm", "md" o "lg".
disabled False Desactiva las dos mitades.
tooltip None Tooltip de la mitad principal.
theme None Tema a usar en lugar del actual (pyzed.theme.current()).

Eventos: on_press, on_menu (eventos).

Referencia completa →