Skip to main content

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)

Ejemplo Completo

5. Pruebas unitarias (para botones)

Ejemplo de Pruebas Unitarias

Pautas de Contribución

¡Las contribuciones son bienvenidas! Si deseas contribuir, por favor sigue estos pasos:

  1. Haz un fork del repositorio.
  2. Crea una nueva rama (git checkout -b feature/nueva-caracteristica).
  3. Realiza tus cambios y haz commit (git commit -m 'feat: Añadir nueva característica').
  4. Haz push a la rama (git push origin feature/nueva-caracteristica).
  5. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pygame_ui_items-0.0.1.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pygame_ui_items-0.0.1-py3-none-any.whl (4.4 kB view details)

Uploaded Python 3

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

Hashes for pygame_ui_items-0.0.1.tar.gz
Algorithm Hash digest
SHA256 6f8198afdf0f86aef5b66d9172a992988ab931bbfbe4b7b6a5722c75e8d4f989
MD5 65a479e05cf2d9adc86d76f57f670ba3
BLAKE2b-256 2cfcbf3d3fb7d1c41c324fbfbd918003164a5e534abccd947282588e02a61b58

See more details on using hashes here.

File details

Details for the file pygame_ui_items-0.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for pygame_ui_items-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c02042e1ff6c536fef30384e1348dc09a035d308b57e9d84887a4035f0e98ee1
MD5 27aab99aadd29a85c9c4de5a247450e0
BLAKE2b-256 432483f3b49a1ef99fb0e94e3e6ae6712ca0904003601c54e04e34c5be646656

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page