
First steps
Making games using pygame
is really cool, but most games (or applications)
require end-user configuration. Creating complex GUI objects to display a menu can
be painful. That was why pygame-menu
was designed.
Here is a simple example of how to create a menu with pygame-menu
(the code is available in pygame_menu.examples.simple.py):
Import the required libraries
import pygame
import pygame_menu
Initialize pygame
pygame.init()
surface = pygame.display.set_mode((600, 400))
Make your menu
def set_difficulty(value, difficulty):
# Do the job here !
pass
def start_the_game():
# Do the job here !
pass
menu = pygame_menu.Menu('Welcome', 400, 300,
theme=pygame_menu.themes.THEME_BLUE)
menu.add.text_input('Name :', default='John Doe')
menu.add.selector('Difficulty :', [('Hard', 1), ('Easy', 2)], onchange=set_difficulty)
menu.add.button('Play', start_the_game)
menu.add.button('Quit', pygame_menu.events.EXIT)
Run your menu
menu.mainloop(surface)

Tadada… !!! Such a beautiful menu \(^o^)/
Interested in going deeper into menu design ?
Advanced usage
This chapter define rules and advanced tips and tricks to develop extensions for
pygame-menu
. The main addressed topics are:
Widgets API
A menu is in fact a list of widgets arranged on the same surface. Access to a widget in a menu can easily be done with two methods:
widget = menu.get_widget('MyWidgetID')
selected = menu.get_selected_widget()
Each pygame_menu
widget and its behaviors are defined in a
class. The currently existing classes are:
For advanced programmers, those classes can be used to design custom menus or windows.
Have a look at pygame_menu.widgets.examples.scrollbar.py for
instance. It shows how to use the pygame_menu.widgets.ScrollBar
class
to display large custom surfaces.