OcempGUI - a GUI engine for Pygame and more

About OcempGUI

OcempGUI is an abbreviation for Ocean Empire GUI and denotes a toolkit, which contains a set of various user interface elements based on and for Pygame.

OcempGUI is a small toolkit, which comes with various modules suitable for event management, user interfaces, 2D drawing and accessibility. It is nearly completely written in Python and its drawing routines and user interface elements are created with and especially created for the Pygame library.

OcempGUI enables you to enhance your Python and/or Pygame applications and games easily with graphical user interface elements such as buttons, entry boxes, scrolling abilities and more, simple event brokers or features, which enhance the program by adding accessibility to its objects.

It can save you much time by providing a broad range of drawing routines and ready-to-use event capable object types. You can focus on the main tasks instead of taking care about needed low-level components, which are given to you with OcempGUI.

Key features

Fast event management module

OcempGUI contains an event management module, that can be used in any Python application. Objects can be bound to specific events to perform certain tasks upon their occurance and event data to be sent has no limitations in its content, size or whatsoever as event handlers have no limitations in their signature.

Objects only need to implement a single centralized method to take the full advantage of the event management capabilities. This guarantees a low integration time and concise code changes in already existing code.

Accessibility support

An accessibility module named papi allows the easy integration of assistive technologies and acessibility support into your own application. It is not limited to graphical user interfaces, but instead any Python object can implement various interfaces to support accessibility ranging from simple keyboard access to extensive information about any object state. This allows people with disabilities to gain more fun and success while working with your application or playing your game.

The accessibility module settles on the AT-SPI standard, which was initially developed by the GNOME accessibility workgroup and has been adopted by the FSG accessibility workgroup to become a common and free industry standard. This enables the OcempGUI accessibility module to be supported on a broad range of platforms and to be well integrated with assistive technologies.

Various additional interface definitions and class implementations allow you to integrate certain accessibility features such as keyboard navigation support, Pygame based screen magnifiers and various other assistive features easily into your Python project.

Robust GUI toolkit for Pygame

In its latest version, OcempGUI contains more that 20 visible user interface elements and many more core classes, which ease the daily programming job whenever you have to deal with user interfaces. Complex graphical user interfaces based on Pygame can be created in no time.

All those so called widgets make use of the other OcempGUI modules, so that you can rely on robust and full featured graphical user interface elements, which collude well with existing code, that makes use of other OcempGUI features, be it accessibility, event capability or anything else of it.

Each widget is sprite-based, which allows you to integrate them easily in your own optimized Pygame drawing loops, if you do not want to use the provided rendering engine or just want to add a few user interface elements to your existing Pygame project.

All user interface elements support themeing and interchangeable drawing engines to fit them to your wanted look and feel. Widgets can be themed individually with no effort, too, be it either as eye-catcher or to point out certain interaction possiblities.

High abstraction layers allow to create new user widgets or to change the behaviour of existing widgets with minimal effort. You are not limited to the code base offered to you by OcempGUI, but instead can create your own ones for your special needs. A generalized widget core allows you override nearly anything of each widget without loosing the widget specific method or attribute implementations.

High documentation standards

We try to keep a high documentation standard for all parts of OcempGUI. It ships with a lot of documentation, inline comments, UML diagrams and design notes, so that you will not feel lost with any part. Many examples, ranging from short code to more complex applications, and a short user manual will help you to gain ground within your first hours or days with OcempGUI.

Open Source

All parts of OcempGUI are open source, licensed under 2-clause BSD license similar to the license used by the various open source BSD operating systems such as FreeBSD. This makes it suitable for nearly any type of project, be it open source, closed source, commercial or whatever else.

Open for your ideas

Do you miss a feature that is existentially for the success of your projects? Did you just have a nifty idea about something to add to OcempGUI? Or did you find a bug, missing documentation or something else, that does not fit?
Report it. Send in your ideas, suggestions, wishes or bug reports. Do not be afraid, you will not be ignored.

If we share your opinion about a change, it will be done. If we think, your wanted feature sounds like a good idea, we will implement it. If you found a bug or a lack of documentation, we will fix it as soon as possible and try to help your with a quick fix, workaround or a short description. If you wrote an additional component and want to see it in OcempGUI, send it and we will gladly integrate it, if you do not mind licensing it under the 2-clause license, OcempGUI uses.

If your request is rejected, you are not lost. Simply ask for a bit of support and we try to help where we can. Use the ocemp-devel mailinglist to join the discussion about OcempGUI, to receive more feedback about your requests or to share your impressions and opinions. No matter if your project is closed or open source, commercial or freely available, you will receive an answer, help or feedback in any way.


On the Widgets page you can take a brief look at various visible user interface elements.