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:

_static/pygame_menu.png

First steps

Making games using :py:mod:`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 why :py:mod:`pygame-menu` was designed.

Here is a simple example of how to create a menu with :py:mod:`pygame-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)
_static/first_steps.png

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

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

.. toctree::
    :maxdepth: 2
    :hidden:
    :caption: First steps

    _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 :py:mod:`pygame-menu`. The main addressed topics are:

.. toctree::
   :maxdepth: 2
   :hidden:
   :caption: Advanced usage

   _source/advanced

.. toctree::
   :maxdepth: 2
   :hidden:
   :caption: Menu APIs

   _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 :py:mod:`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 :py:class:`pygame_menu.widgets.ScrollBar` class to display large custom surfaces.

.. toctree::
    :maxdepth: 2
    :hidden:
    :caption: Widgets API

    _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

.. toctree::
    :maxdepth: 2
    :hidden:
    :caption: About pygame-menu

    _source/license
    _source/contributors


Indices and tables

.. toctree::
    :maxdepth: 2
    :hidden:
    :caption: Migration Guides

    _source/migration_guide_2_to_3
    _source/migration_guide_3_to_4