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.