Creation of UI components in a simplified way and using a CSS-like syntax
Project description
pygame_ui_items
pygame_ui_items es una librería open-source para Python que proporciona herramientas para la creación y gestión de elementos de interfaz de usuario (UI) en Pygame, con un enfoque en la personalización, uso de una sintaxis tipo CSS para los estilos y facilidad de uso. Actualmente en la versión 0.0.1, se centra en la creación de botones, permitiendo definirlos en una sola línea de código y modificarlos con total libertad. Por el momento, la librería incluye:
- Botones (Button): Permite crear botones con texto, posición, tamaño y estilo definido de manera similar a CSS.
- Temas (Themes): Permite cambiar la apariencia de los botones de manera sencilla (posteriormente se añadirán más elementos UI a los que se les podrá aplicar estilos de manera más sencilla).
Tabla de Contenidos
Instalación
Para instalar pygame_ui_items ejecuta:
pip install pygame_ui_items
Asegúrate también de tener Pygame instalado. O tambien puedes ejecutar el requirements.txt que incluye Pygame y pytest:
pip install -r requirements.txt
Características
- Creación de Botones en una Línea: Define botones con texto, posición, tamaño y estilo similar a CSS.
- Personalización Completa: Modifica los botones por defecto o crea nuevos con estilos personalizados.
- Fácil Integración: Se integra perfectamente con el ciclo principal de Pygame.
- Temas: Permite cambiar la apariencia de los botones de manera sencilla.
Ejemplos de Uso
1. Creación de un botón simple
import pygame
from pygame_ui_items.ui_manager import UIManager
from pygame_ui_items.button_factory import create_button
pygame.init()
screen = pygame.display.set_mode((800, 600))
ui_manager = UIManager()
button = create_button("Click Me", lambda: print("¡Clic!"), x=100, y=100)
ui_manager.add_element(button)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
ui_manager.handle_event(event)
ui_manager.update()
screen.fill((255, 255, 255))
ui_manager.draw(screen)
pygame.display.flip()
pygame.quit()
2. Creación de múltiples botones con diferentes estilos predefinidos
import pygame as pg
import sys
from pygame_ui_items.button_factory import (
button_red,
button_blue,
button_green,
button_yellow
)
pg.init()
if __name__ == "__main__":
screen = pg.display.set_mode((800, 600))
clock = pg.time.Clock()
btn_red = button_red("Rojo", lambda: print("¡Rojo!"), x=100, y=100)
btn_blue = button_blue("Azul", lambda: print("¡Azul!"), x=100, y=160)
btn_green = button_green("Verde", lambda: print("¡Verde!"), x=100, y=220)
btn_yellow = button_yellow("Amarillo", lambda: print("¡Amarillo!"), x=100, y=280)
buttons = [btn_red, btn_blue, btn_green, btn_yellow]
running = True
while running:
for event in pg.event.get():
if event.type == pg.QUIT:
running = False
for button in buttons:
button.handle_event(event)
screen.fill((240, 240, 240))
for button in buttons:
button.draw(screen)
pg.display.flip()
clock.tick(60)
pg.quit()
sys.exit()
3. Modificación de Estilos (Personalizado)
import pygame as pg
import sys
from pygame_ui_items.button_factory import create_button
pg.init()
if __name__ == "__main__":
screen = pg.display.set_mode((800, 600))
clock = pg.time.Clock()
btn_custom = create_button(
"Boton Personalizado",
lambda: print("¡Personalizado!"),
x=100,
y=340,
width=150,
height=45,
bg_color=(139, 0, 0),
hover_bg_color=(178, 34, 34),
text_color=(255, 255, 255),
border_radius=70
)
buttons = [btn_custom]
running = True
while running:
for event in pg.event.get():
if event.type == pg.QUIT:
running = False
for button in buttons:
button.handle_event(event)
screen.fill((240, 240, 240))
for button in buttons:
button.draw(screen)
pg.display.flip()
clock.tick(60)
pg.quit()
sys.exit()
4. Ejemplo completo (imagen)
5. Pruebas unitarias (para botones)
Pautas de Contribución
¡Las contribuciones son bienvenidas! Si deseas contribuir, por favor sigue estos pasos:
- Haz un fork del repositorio.
- Crea una nueva rama (
git checkout -b feature/nueva-caracteristica). - Realiza tus cambios y haz commit (
git commit -m 'feat: Añadir nueva característica'). - Haz push a la rama (
git push origin feature/nueva-caracteristica). - Abre un Pull Request.
Notas
- La estructura del proyecto no sigue al ejemplo indicado por fallas de importación relativas y absolutas. Se probaron varias configuraciones, estructuras y esta es la que mejor funcionó.
- El ejemplo de prueba example_buttons.py tampoco funciona si se coloca en una carpeta dedicada como puede ser "examples" o "tests", por lo que se dejó en la raíz del proyecto en el que sí funcionó sin problemas (también se probó en una carpeta dedicada "examples" pero no funcionó).
- La librería está en una fase muy temprana de desarrollo (v0.0.1) y se planea añadir más elementos UI y funcionalidades, además de diseños predefinidos para ciertos tipos y estilos de juegos en el futuro.
Licencia
Este proyecto está licenciado bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pygame_ui_items-0.0.1.tar.gz.
File metadata
- Download URL: pygame_ui_items-0.0.1.tar.gz
- Upload date:
- Size: 5.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6f8198afdf0f86aef5b66d9172a992988ab931bbfbe4b7b6a5722c75e8d4f989
|
|
| MD5 |
65a479e05cf2d9adc86d76f57f670ba3
|
|
| BLAKE2b-256 |
2cfcbf3d3fb7d1c41c324fbfbd918003164a5e534abccd947282588e02a61b58
|
File details
Details for the file pygame_ui_items-0.0.1-py3-none-any.whl.
File metadata
- Download URL: pygame_ui_items-0.0.1-py3-none-any.whl
- Upload date:
- Size: 4.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c02042e1ff6c536fef30384e1348dc09a035d308b57e9d84887a4035f0e98ee1
|
|
| MD5 |
27aab99aadd29a85c9c4de5a247450e0
|
|
| BLAKE2b-256 |
432483f3b49a1ef99fb0e94e3e6ae6712ca0904003601c54e04e34c5be646656
|