Ir al contenido

Iconos y fuentes

Pyzed incluye la fuente de iconos de Lucide (~2000 iconos, licencia ISC). Los iconos se dibujan como texto, así que se ven nítidos a cualquier tamaño y aceptan cualquier color:

pz.icon("folder", size=16, color="#74ade8")
ui.button("Abrir", self.abrir, icon="folder-open")
ui.list_item("Ajustes", self.ajustes, icon="settings")

Sin color, pz.icon toma el color del texto que lo rodea. Los iconos dentro de los componentes de pyzed.ui usan los tokens icon e icon_muted del tema, así que siguen el tema.

Busca nombres en lucide.dev/icons o desde la terminal:

Ventana de terminal
uv run pyzed icons git
# git-branch, git-commit-horizontal, git-compare, git-fork, git-merge, git-pull-request, ...

pyzed.icons.names() devuelve la lista completa y pyzed.icons.glyph("folder") el carácter, para mezclarlo con texto usando font="icons".

icons.search busca iconos por nombre y por las etiquetas de Lucide (en inglés), los mejores primero, e icons.category los agrupa para explorarlos:

from pyzed import icons
icons.search("person") # ["person-standing", "user", "contact", ...]
icons.category("arrows") # todas las flechas, chevrons, deshacer...

Para que el usuario elija uno, usa ui.IconPicker, o ui.icon_picker_dialog en una ui.dialog_layer: un buscador, categorías y una cuadrícula con todos los iconos.

from pyzed import icons
icons.for_file("main.rs") # ("file-code", "#dea584")
icons.for_file("Cargo.toml") # ("file-cog", "#9c4221")
icons.language_for("main.py") # "Python"

ui.Tab.for_file y ui.tree ya los usan.

Fuentes incluidas:

Nombre Fuente
"sans" (por defecto) IBM Plex Sans
"mono" IBM Plex Mono
"icons" Lucide

"serif" usa la fuente serif del sistema. Elige una fuente para un texto, para un bloque (todo texto dentro la hereda) o para toda la ventana:

pz.text("fn main() {}").style(font="mono") # un texto
pz.column([...]).style(font="serif", size=15) # todo texto dentro
class MiApp(pz.App):
style = pz.Style(font="mono") # toda la ventana

Carga un archivo .ttf u .otf antes de ejecutar la app y refiérete a él por su nombre de familia (el nombre que declara la fuente, no el del archivo):

pz.load_font("fonts/JetBrainsMono-Regular.ttf")
pz.text("fn main() {}", font="JetBrains Mono")
pz.code_editor("buf", texto, font="JetBrains Mono")

load_font también acepta los bytes del archivo. Carga cada peso que uses (Regular, Bold…) como su propio archivo.