Skip to main content

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!")

Metadata

Release files for PygameMenus 0.0.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for PygameMenus 0.0.6
File Size Uploaded
PygameMenus-0.0.6.tar.gz 14.2 kB Details

Release files / PygameMenus-0.0.6.tar.gz

Download URL PygameMenus-0.0.6.tar.gz
Size 14.2 kB
Tags Source
SHA-256 checksum
How to use checksums
05d4340557e1b0c3d2777bdd54a13428d0aee9ee2f2e28f085754c52440b526f
BLAKE2b-256 checksum
How to use checksums
69530681d9a8b530bfe5bc39e954e7f8ded57719789e3a17e17d7eeb5245d6ee
Upload date
Uploaded using Trusted Publishing?
What is 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

Release history Release notifications | RSS feed

This release

0.0.6 This release

1 release file

0.0.5

1 release file

0.0.4

1 release file

0.0.3

1 release file

0.0.2

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page