Skip to content

Latest commit

 

History

History
210 lines (152 loc) · 5.35 KB

index.rst

File metadata and controls

210 lines (152 loc) · 5.35 KB
orphan

image

First steps

Making games using :pypygame is really cool, but most games (or applications) require end-user configuration. Creating complex GUI objects to display a menu can be painful. That why :pypygame-menu was designed.

Here is a simple example of how to create a menu with :pypygame-menu (the code is available in pygame_menu.examples.simple.py):

  1. Import the required libraries
import pygame
import pygame_menu
  1. Initialize pygame
pygame.init()
surface = pygame.display.set_mode((600, 400))
  1. 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(300, 400, 'Welcome',
                       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)
  1. Run your menu
menu.mainloop(surface)

Tadada... !!! Such a beautiful menu \(^o^)/

Tadada... !!! Such a beautiful menu \(^o^)/

Interested in going deeper into menu design <Creating menus> ?

_source/create_menu _source/add_widgets _source/add_sounds _source/themes _source/gallery

Advanced usage

This chapter define rules and advanced tips and tricks to develop extensions for :pypygame-menu. The main addressed topics are:

  • Creating a widget <Create a widget>
  • Creating a selection effect <Create a selection effect>

_source/advanced

_source/baseimage _source/scrollarea.rst

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 :pypygame_menu widget and its behaviors are defined in a class. The currently existing classes are:

  • :py~pygame_menu.widgets.Button
  • :py~pygame_menu.widgets.ColorInput
  • :py~pygame_menu.widgets.DropSelect
  • :py~pygame_menu.widgets.DropSelectMultiple
  • :py~pygame_menu.widgets.Frame
  • :py~pygame_menu.widgets.HMargin
  • :py~pygame_menu.widgets.Image
  • :py~pygame_menu.widgets.Label
  • :py~pygame_menu.widgets.MenuBar
  • :py~pygame_menu.widgets.MenuLink
  • :py~pygame_menu.widgets.NoneWidget
  • :py~pygame_menu.widgets.ScrollBar
  • :py~pygame_menu.widgets.Selector
  • :py~pygame_menu.widgets.SurfaceWidget
  • :py~pygame_menu.widgets.Table
  • :py~pygame_menu.widgets.TextInput
  • :py~pygame_menu.widgets.ToggleSwitch
  • :py~pygame_menu.widgets.VMargin

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 :pypygame_menu.widgets.ScrollBar class to display large custom surfaces.

_source/widgets_button _source/widgets_colorinput _source/widgets_dropselect _source/widgets_dropselect_multiple _source/widgets_frame _source/widgets_hmargin _source/widgets_image _source/widgets_label _source/widgets_menubar _source/widgets_menulink _source/widgets_none _source/widgets_scrollbar _source/widgets_selector _source/widgets_surface _source/widgets_table _source/widgets_textinput _source/widgets_toggleswitch _source/widgets_vmargin

About pygame-menu

This project does not have a mailing list and so the issues tab should be the first point of contact if wishing to discuss the project. If you have questions that you do not feel are relevant to the issues tab or just want to let me know what you think about the library, feel free to email me at pablo@ppizarror.com

_source/license _source/contributors

Indices and tables

  • genindex
  • modindex
  • search

_source/migration_guide_2_to_3 _source/migration_guide_3_to_4