Skip to main content

A powerful GUI framework for Python that allows you to create declarative interfaces with ease.

Project description

Example1

alt text

Brief Description

Nevu UI is a library for the declarative creation of user interfaces in python. The project aims to provide developers with a set of ready-made, stylable, and extensible components for the rapid creation of modern and responsive interfaces in games and multimedia applications.

The main goal of Nevu UI: to make creating interfaces in python even easier and faster

Key features include:

  • Layout system: Convenient arrangement of elements, for example, using grids (Grid) and scrollable containers (ScrollableColumn).
  • Set of widgets: Ready-to-use elements such as buttons, input fields, and labels.
  • Flexible styling: The ability to customize the appearance through a style system that supports colors, gradients, and borders.
  • Animations: Built-in support for animations to create dynamic and lively interfaces.
  • Declarativeness: Support for declarative interface creation

Style

Style - storage of parameters for customizing the appearance

Editable parameters:

  • Gradient
  • ColorTheme - Analogous to MaterialDesign, there is a ready-made set of themes - ColorThemeLibrary
  • Font name/size
  • Border Width/Radius
  • Text Align X/Y
  • Transparency

Main Features

Nevu UI allows you to describe an interface with a clear structure

Examples of declarativeness:

  • Declarative approach: Describe your interface just as you see it.
    # Specify content directly when creating the layout
    grid = ui.Grid(content={(1,1): ui.Button(...)})
    
  • Adaptive size system (SizeRules): Forget about pixels. Use relative values that adjust to the size of the window or parent element.
    • vh / vw: Percentage of the window's height/width.
    • fillx / filly / fill: Percentage of the parent layout's height/width/size.
    • gc / gcw / gch: Percentage of the grid cell size.
    • Prefix c: can be placed in any SizeRule, it means that the current value will be taken (without the prefix, the original will be taken).
  • Powerful style system: Customize every aspect of the appearance using the universal Style object.
    • Themes: Ready-made color themes in ColorThemeLibrary.
    • Gradients: Support for linear and radial.
    • Image: Support for a background image via the bgimage parameter.
    • Inheritance: Styles can be created based on existing ones.
    • And much more: Fonts, borders, rounding, transparency.
  • Built-in animations: Bring your interface to life with ready-made animations for movement, transparency, etc.
    • 25+ built-in animations
    • There are 2 types of animations:
      • Start - Allows you to set the initial appearance of the widget.
      • Infinite - Produces an infinite animation defined in animation_manager.
    • Usage example:
      • Start: widget.animation_manager.add_start_animation(ui.animations.EaseOut(...))
      • Infinite: widget.animation_manager.add_continuous_animation(ui.animations.EaseOut(...))

Parameter System (ParamEngine):

  • ParamEngine is a convenient tool built into all layouts and widgets, it allows you to:
    • Declaratively add variables to the object's __init__
    • Check the variable type during initialization and after
    • Integrate a parameter into different stages of initialization
    • Retrieve parameter values via self.get_param(param_name).get()
    • Set parameter values via self.get_param(param_name).set(value)
  • Examples:
    import nevu_ui as ui
    from typing import Unpack, NotRequired
    
    #Create a TypedDict with variables (optional, but looks nice)
    class MyWidgetKwargs(ui.WidgetKwargs):
        my_var: NotRequired[int | float]
    
    class MyWidget(ui.Widget):
        def __init__(self, size: NvVector2 | list, style: Style = default_style, **constant_kwargs: Unpack[MyWidgetKwargs]):
            super().__init__(size, style, **constant_kwargs)
    
        #Override the function to add parameters (mandatory)
        def _add_params(self):
            super()._add_params()
    
            #Add a parameter (mandatory)
            self._add_param('my_var', int | float)
    
            #You can also add a link to a parameter
            #self._add_param_link('my_var', 'my_var_new_name')
    
            #You can also block a parameter if necessary
            #self._block_param('my_var')
    

Installation

Dependencies:

Python >= 3.12.*

  • For Building:
    • setuptools >= 61.0
    • Cython
    • numpy
  • For Running:
    • pygame-ce>=2.3.0
    • numpy
    • Pillow
    • pyray

Installation via pip

pip install nevu-ui

Examples

Example1

Example2

Example3


Basic Grid

Declarative Approach

import nevu_ui as ui #Import Nevu UI
import pygame

pygame.init()

class MyGame(ui.Manager): #Create the base of our application
    def __init__(self):
        super().__init__(ui.Window((400, 300), title = "My Game")) #Initialize the manager
        style = ui.Style(borderradius=20, colortheme=ui.ColorThemeLibrary.material3_dark) #Create Style (optional)
        self.menu = ui.Menu(self.window, [100%ui.vw, 100%ui.vh], style = style, #Create a menu
                            layout= ui.Grid([100%ui.vw, 100%ui.vh], row=3, column=3, #Create a grid layout
                                            content = {
                                                (2, 2): ui.Button(lambda: print("You clicked!"), "BUTTON!", [50%ui.fill, 50%ui.gc], style=style) #Create a button
                                            }
                                            )
                            )
    def on_draw(self):
        self.menu.draw() #draw the menu
    def on_update(self, events):
        self.menu.update() #update the menu

game = MyGame()
game.run() #Run the finished application

Imperative Approach

import nevu_ui as ui #Import Nevu UI
import pygame

pygame.init()

window = ui.Window((400, 300), title = "My Game") #Create a window

style = ui.Style(borderradius=20, colortheme=ui.ColorThemeLibrary.material3_dark) #Create Style
menu = ui.Menu(window, [100%ui.vw, 100%ui.vh], style=style) #Create a menu
layout = ui.Grid([100%ui.vw, 100%ui.vh], row=3, column=3) #Create a grid layout
layout.add_item(ui.Button(lambda: print("You clicked!"), "BUTTON!", [50%ui.fill, 50%ui.gc], style=style), x = 2, y = 2) #Create a button

menu.layout = layout #Set the menu layout

while True: #Main loop
    events = pygame.event.get() #Get events
    window.update(events) #Update the window
    menu.update() #Update the menu
    menu.draw() #Draw the menu
    pygame.display.update() #Update the screen

Example Result

Example1

Nevu UI Status at the Moment

Layouts (Layout_Type Heirs)

(✅ - done, ❌ - not done, 💾 - deprecated/not working)

  • Grid
  • Row
  • Column
  • ScrollableRow
  • ScrollableColumn
  • ColorPicker
  • 💾 Pages
  • 💾 Gallery_Pages
  • StackColumn
  • StackRow
  • CheckBoxGroup

Widgets (Widget Heirs)

  • Widget
  • Button
  • Label
  • Input
  • EmptyWidget
  • Tooltip (Pygame exclusive, for now)
  • 💾 Gif
  • MusicPlayer (Will be reworked, hopefully)
  • ProgressBar
  • SliderBar
  • ElementSwitcher
  • 💾 FileDialog
  • RectCheckBox

Available Backends

  • Pygame-ce
  • Pygame-ce._sdl2(Sdl)
  • RayLib (BETA)

Backend Exclusives

  • Ripple effect - Raylib exclusive
  • Transparent colors inside Gradient - Raylib exclusive
  • Customizable center and angle of the gradient - Raylib exclusive
  • Tooltip - Pygame exclusive

License

Nevu UI is protected by the MIT license

Bugs

  • Nevu UI is NOT a stable framework, you may encounter many bugs in it.

Additional Information

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

nevu_ui-0.7.4-cp314-cp314t-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.14tWindows x86-64

nevu_ui-0.7.4-cp314-cp314t-musllinux_1_2_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

nevu_ui-0.7.4-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

nevu_ui-0.7.4-cp314-cp314-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.14Windows x86-64

nevu_ui-0.7.4-cp314-cp314-musllinux_1_2_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

nevu_ui-0.7.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

nevu_ui-0.7.4-cp313-cp313-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.13Windows x86-64

nevu_ui-0.7.4-cp313-cp313-musllinux_1_2_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

nevu_ui-0.7.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

nevu_ui-0.7.4-cp312-cp312-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.12Windows x86-64

nevu_ui-0.7.4-cp312-cp312-musllinux_1_2_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

nevu_ui-0.7.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

File details

Details for the file nevu_ui-0.7.4-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: nevu_ui-0.7.4-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for nevu_ui-0.7.4-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 1982ca4b1d3a1d63317717d60c93fab1f53032cc94fe6622aa52972128d196c0
MD5 9bf83553fd45d8b8026a2a398a1d05db
BLAKE2b-256 2b79d5f5ef4a91f0296b6d934cbb38036e28963dd208f1e89fb775fe77f91dc0

See more details on using hashes here.

File details

Details for the file nevu_ui-0.7.4-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nevu_ui-0.7.4-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 faa4f00d027e907beaae8a5b04f7023aa2bdd5fce5f645ecd9a158f9d3f81aac
MD5 3a42ae998cc4a52ce493b2540fde4daa
BLAKE2b-256 859e2f808f65409143a88ead2757bc5f22064a0f7d729fd1e3903dd0fc3f448a

See more details on using hashes here.

File details

Details for the file nevu_ui-0.7.4-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nevu_ui-0.7.4-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 81e612a5e5e7fa972bc9ec1ef704cc0a20b973e6c3f2d3f7892d6e56112c877e
MD5 9bfe1a14883cbd9e5b103482da70535f
BLAKE2b-256 ecfd321bc170a7254e7347924a254ef5795225c3bf8ce654f2fe09ba5753e84e

See more details on using hashes here.

File details

Details for the file nevu_ui-0.7.4-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: nevu_ui-0.7.4-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for nevu_ui-0.7.4-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 a2380c6aa70c34bdcaad7cafda0628ac2f13eda087bc6526ed9c48b0d07efe27
MD5 7d3fedf01aa45b2044d9687e8360dc09
BLAKE2b-256 65c9df49c27526aa91ac200b2669cba979c25ecb959544ec8ff4a133b7fcbdfc

See more details on using hashes here.

File details

Details for the file nevu_ui-0.7.4-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nevu_ui-0.7.4-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c8b8f0fd05b1e4b3234cfc20cfdffbafa9d8dd03ed337d9d6148aaabb6a07507
MD5 3357a1b22a16fe57a8fe30de421dc73b
BLAKE2b-256 fa3e4b65df043e93a31d7f597aa2debe1fd096be220c2409dfc745183aa9a25b

See more details on using hashes here.

File details

Details for the file nevu_ui-0.7.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nevu_ui-0.7.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4673a9a445d3476b94d77b7d936304c0c832f32c4642c43c986bd422c0bc823e
MD5 234940d376f710204b46eb197dd80bde
BLAKE2b-256 e284fe96d67dd07169bda96f40c92d6a79db380d33b4c87e43d9e5a0da37aa43

See more details on using hashes here.

File details

Details for the file nevu_ui-0.7.4-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: nevu_ui-0.7.4-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for nevu_ui-0.7.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 9548aa86b7787106fb8fa853d33092c54d363c02e15d7fe2050ced4a3be14d9a
MD5 bd51b64c22789a7df6d4266b22dd66e8
BLAKE2b-256 59d939f3e993693a708a164be97182280edb23bf1f408df33c853b2d63630871

See more details on using hashes here.

File details

Details for the file nevu_ui-0.7.4-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nevu_ui-0.7.4-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 513d6e435e0e5a5708341ce990c729d55d762c03ec90d4aa6793070ec9828b7d
MD5 34b41d7acd05d58376bf5f375689b388
BLAKE2b-256 87f4815e07ed34cc31d25646dcd5851b70f9f0eb39531c0d99d2d47c98e29659

See more details on using hashes here.

File details

Details for the file nevu_ui-0.7.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nevu_ui-0.7.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 09c0c5731edf562cfd83401900e4d85252706f060be9fb1d4ea18b59ceb3a373
MD5 a3375ff5d817991def928e9924c7540a
BLAKE2b-256 66a7f88ce66af08a22da1e974ff23e508a83adcf563c15e5e12d0b47c9fd7703

See more details on using hashes here.

File details

Details for the file nevu_ui-0.7.4-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: nevu_ui-0.7.4-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for nevu_ui-0.7.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 75434535f01a63513ef74b6a18dba6077c76834b2e39504d87c233e526de1721
MD5 4e2f331199a2161f56c9a8c13193c0ce
BLAKE2b-256 da4dcae1001135280ab6b6d6f56af324ad4b215a067bc1c508cd8133167d9392

See more details on using hashes here.

File details

Details for the file nevu_ui-0.7.4-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for nevu_ui-0.7.4-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f994a6050b091d9c26b907c99c29588515315138496924650e980f13e406b27b
MD5 eff67baa713895c34b35c81bc7b36ed6
BLAKE2b-256 2817ca02c18f7120a42a24dd7cc25b685277d9bac6b7dbddbafd7f8c318837c2

See more details on using hashes here.

File details

Details for the file nevu_ui-0.7.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nevu_ui-0.7.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 45a37af8aa3321e7ad63e8db4fce85db20246b3da6dbb08283a75cb8524efaa6
MD5 a61c33e0d409c01c50bffb0b771f4447
BLAKE2b-256 adc2e35210c7a129df91c616b97f32366e7d00efecade52b25de9df82389e53e

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