Skip to main content

Make menus with pygame

Project description

PygameMenus

Make menus for pygame projects with PygameMenus!

This packages helps you to not waste time creating menus for games or others pygame projects.

All you have to do is:

1 - Create and configure the colors of your buttons.

2 - Create and configure as many buttons as you want.

3 - Put them into a matrix (2D list).

4 - Configure the matrix in a block object.

5 - Create and configure a title.

6 - Create and configure as many menus and submenus as you want.

7 - Copy and paste the loop in the examples section of this readme.

8 - Try to merge your project with the menus (This may be the trickiest part :D).

IMPORTANT: This package as no documentation available yet. However you can find all the information you need in this readme and in the examples source file in PygameMenus/examples.py :)

Commands

Install

py -m pip install PygameMenus

Upload to PyPI

Go to project root folder

py setup.py sdist
py -m twine upload dist/*

Release new version to PyPI

Update version number in setup.py

py setup.py sdist
py -m twine upload --skip-existing dist/*

Buttons

Press Button

# create button
press_button = PressButton(font, items_list, colors)

# get current item displayed on button
current_item = press_button.get_current_item()

Slide Button

# create button
slide_button = SlideButton(font, bar_width, items_list, colors)

# get current item displayed on button
current_item = slide_button.get_current_item()

Redirect Button

# create button
redirect_button = RedirectButton(font, bar_width, items_list, colors)

# get the state where the button is redirecting to
next_state = redirect_button.get_next_state()

Examples

Setup button colors

mouse_out_colors = MousePositionButtonColors(button=(0, 255, 255), font=(0, 0, 255), bar=(200, 200, 255))

mouse_over_colors = MousePositionButtonColors(button=(255, 255, 0), font=(255, 0, 0), bar=(255, 165, 0))

button_colors = ButtonColors(mouse_over_colors, mouse_out_colors)

Objects

mouse_out_colors - Colors of the button when the mouse cursor is outside the button area.

mouse_over_colors - Colors of the button when the mouse cursor in inside the button area.

button_colors - Colors of the button to be passed to the button object.

Parameters

button - Background color of the button.

font - Color of the font inside button.

bar - Color of the bar inside button (only applied in buttons of type SlideButtons).

Create button

button_font = FloatFont("Arial", 70)

button_range = range(101)

slide_button = SlideButton(button_font, 10, button_range, button_colors)

Objects

button_font - font inside button (Object of PygameFloatObjects package).

button_range - list of all values that can be displayed on the button (In this case, when the bar is leaning to left the value is 0 and when the bar is leaning to the right the value is 100).

slide_button - type of button which has a slide bar (object of PygameMenus package).

10 - bar width.

Create buttons block

buttons_matrix = ((slide_button, slide_button_1, slide_button_2),
                  (press_button_1,),
                  (redirect_button_1, redirect_button_1))
                                 
block = Block((500, 500), buttons_matrix, 20, 30)

Objects

buttons_matrix - Matrix of buttons that defines where the buttons are displayed in the menu.

block - Object located under the menu title which contains all the menu buttons and their location.

(500, 500) - Size of the block (x, y).

20 - Horizontal margin between buttons.

30 - Vertical margin between buttons.

Create title

title_font = FloatFont("Arial", 150)

title = Title(title_font, (0, 0, 0), "Main Menu")

Objects

title_font - Font of the title (object of PygameFloatObjects).

(0, 0, 0) - Color of the title font.

"Main Menu" - Text of the title font.

Create menu

main_menu = Menu(screen, title, block, 30, (0.80, 0.80), 0.80, "STATE_MAIN_MENU")

Objects

screen - Pygame screen display object.

title - Menu title (PygameMenus object).

block - Buttons block (PygameMenus object).

30 - Margin between title and block.

(0.80, 0.80) - Horizontal and vertical menu maximum size ratio (used to know the instant of resizing).

0.80 - Resize ratio (How much the menu should resize).

"STATE_MAIN_MENU" - String corresponding to the menu state name (used in the loop of the program).

Create loop

exit_loop = False
current_state = "STATE_MAIN_MENU"
current_screen_display = screen

while not exit_loop:

    if current_state == "STATE_MAIN_MENU":

        main_menu.set_screen_display(current_screen_display)
        main_menu.loop()
        if main_menu.get_pressed_exit():
            exit_loop = True

        else:
            current_state = main_menu.get_next_state()
            current_screen_display = main_menu.get_screen_display()

        screen.fill((255, 255, 255))
        pygame.display.update()

    elif current_state == "STATE_SEC_MENU":

        sec_menu.set_screen_display(current_screen_display)
        sec_menu.loop()
        if sec_menu.get_pressed_exit():
            exit_loop = True

        else:
            current_state = sec_menu.get_next_state()
            current_screen_display = sec_menu.get_screen_display()

        screen.fill((255, 255, 255))
        pygame.display.update()

    elif current_state == "STATE_EXIT":
        exit_loop = True

    else:
        print("Invalid state!")

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

PygameMenus-0.0.6.tar.gz (14.2 kB view details)

Uploaded Source

File details

Details for the file PygameMenus-0.0.6.tar.gz.

File metadata

  • Download URL: PygameMenus-0.0.6.tar.gz
  • Upload date:
  • Size: 14.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.2

File hashes

Hashes for PygameMenus-0.0.6.tar.gz
Algorithm Hash digest
SHA256 05d4340557e1b0c3d2777bdd54a13428d0aee9ee2f2e28f085754c52440b526f
MD5 52f31b503c3aad440e4262c6593a63b3
BLAKE2b-256 69530681d9a8b530bfe5bc39e954e7f8ded57719789e3a17e17d7eeb5245d6ee

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page