Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Build Status Pypi Version Pypi Status Python Version

Code Health Pypi Downloads

Pygame GUI

What is it ?

This librairy aims to provide simple widget to improve pygame applications like buttons, text, textboxes or math text widgets. There is also some goemetric shapes, like rectangle or bezier curves.

Dependancies

  • pygame : This library is fully based on pygame, so you must have it installed.

(optionnal) * latex : you must avec latex install if you want to use the LaText widget (latex and dvipng accessible in path)

Installation

You can install it with pip and pypi easily by :

pip install -U PygameGUILib

or via git and pip :

pip install -U git+https://github.com/ddorn/GUI.git@release#egg=GUI

Widgets

Actually there is a fex widgets in the library. I’ll try to maintain this list, but I’m sure I’ll forget, so there is MORE than that.

  • Texts :

    • SimpleText

    • LaText

    • InLineInputBox

    • InLinePassBox

  • Buttons :

    • Button

    • IconButton

    • SlideBar

Around that, there is a lot of helping objects, like Font, colors, V2 and Separator (some vector things), FPSIndicator, FocusSelector…

Use

Bases

Every widget has a pos, a size and an anchor, the three can be harcoded or a callback function with no parameters. The pos and the size defines a pygame.Rect where the widget is. The posis per default the center of the widget, but you can change this behavior by giving an other anchor, like TOPLEFT.

Tree steps to use a button

Every widget is totally independent and will do nothing unless you tell him to do something. There is no theading thing that continuously check for events both for performance and to give you more control on the widgets.

For instance, widget won’t auto-render on the screen and won’t listen events, like clics on buttons.
Thus, to have a fully operational button there are three steps :

Just define it, nothing complex once you’ve read the bases.

# define the action the button will perform when clicked
def callback():
    print('PRESSED !")

button = Button(callback, (100, 100), (100, 40), "Click Me !")

Then, you must continuously check for events, and call click() when you want. (typically when the user clicks the button)

for e in pygame.events.get():
    if e.type == pygame.MOUSEBUTTONDOWN and e.button == 1:  # left click
        if pygame.mouse.get_pos() in button:
            button.press()  # you tell the button to call the callback if clicked

And finally you must render the button on the screen.

button.render(display)  # you draw the button on the display

It’s basically the same thing for any widget, except for “passive” widgets like texts, because we do not bother if the user clicks it. For other widgets, like textboxes, you’ll want to update them with the inputs so you must call .update(event) too.

Limitations

As always with pygame, do not try to make too big apps with a lot of changing texts or with too big protions of the screen that are too often redrawn or it can lag a bit.

Help and todo list

You’re welcome !

How can you help ?

Do not hesitate to contact me per mail or join the slack chat to discuss aboute code, optimisation or functionnalities. You can of course make any push request you want !
Feel free to report any issue you see as I do not have strong tests (I mean, almost no tests !)

Todos :

  • A Text class to make texts that goes on more lines and with wrapping.

  • A TextBox, to input multi line text

  • A RichText to make text with differents inner colors/size/font/styles

  • Something like lists

  • Switch class : Nice looking ON/OFF button

  • Some geometry function to draw curves, grids and manipulate line, polygons

This is absolutly not an ordered list, they will come as I have nice looking and useable classes !

Cool projects with this library

Do not hesitate to tell me if you have something working !
Here is a list of projets that uses my library, take inspiration !

Examples at the and of each file can also give you a lot of samples of how to use this library :) There is also a folder full of example that you will apreciate !

Metadata

Release files for PygameGUILib 0.4a6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for PygameGUILib 0.4a6
File Size Uploaded Provenance Actions
PygameGUILib-0.4a6.tar.gz 791.2 kB Without provenance Details for PygameGUILib-0.4a6.tar.gz

Release files / PygameGUILib-0.4a6.tar.gz

Download URL PygameGUILib-0.4a6.tar.gz
Size 791.2 kB
Tags Source
SHA-256 checksum
How to use checksums
805ca51b55081965ee1fadd98dc0517e2d9077f556d949ce7bdc64036f737e42
BLAKE2b-256 checksum
How to use checksums
a64b8abb19d9b53a2359e962a1830643d2149f243475c9d57c384aee333af91f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for PygameGUILib 0.4a6

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page