A dropdown menu allowing the selection of various elements.
import pygame_widgets
import pygame
from pygame_widgets.button import Button
from pygame_widgets.dropdown import Dropdown
pygame.init()
win = pygame.display.set_mode((400, 280))
dropdown = Dropdown(
win, 120, 10, 100, 50, name='Select Color',
choices=[
'Red',
'Blue',
'Yellow',
],
borderRadius=3, colour=pygame.Color('green'), values=[1, 2, 'true'], direction='down', textHAlign='left'
)
def print_value():
print(dropdown.getSelected())
button = Button(
win, 10, 10, 100, 50, text='Print Value', fontSize=30,
margin=20, inactiveColour=(255, 0, 0), pressedColour=(0, 255, 0),
radius=5, onClick=print_value, font=pygame.font.SysFont('calibri', 10),
textVAlign='bottom'
)
run = True
while run:
events = pygame.event.get()
for event in events:
if event.type == pygame.QUIT:
pygame.quit()
run = False
quit()
win.fill((255, 255, 255))
pygame_widgets.update(events)
pygame.display.update()This is a classic dropdown, but with a twist: if you right-click on the top, it reset itself. To get the current value
of the dropdown, we use the getSelected() methods.
It returns:
Noneif nothing is selected- A string with the choice you selected if the optional arg
valueis not set - If the optional arg
valueis set, we return the value corresponding to the choice.
For the example above:
| Choice | Value |
|---|---|
| Red | 1 |
| Blue | 2 |
| Yellow | 3 |
Note: Mandatory parameters must be supplied in order.
| Parameter | Description | Type |
|---|---|---|
| name | Main name of the dropdown | str |
| choices | Choices to display | list of str |
| Parameter | Description | Type | Default |
|---|---|---|---|
| direction | Expansion direction. Can be 'down', 'up', 'left' or 'right'. | str | down |
| values | optional return value corresponding to the choices. Must be the same length as choices |
list | a copy of choices |
| inactiveColour | Default colour when not pressed or hovered over. | (int, int, int) | (150, 150, 150) |
| pressedColour | Colour when pressed. | (int, int, int) | (100, 100, 100) |
| hoverColour | Colour when hovered over. | (int, int, int) | (125, 125, 125) |
| onClick | Function to be called when clicked. | function | None |
| onClickParams | Parameters to be fed into onClick function. | (*any) | () |
| onRelease | Function to be called when released. | function | None |
| onReleaseParams | Parameters to be fed into onRelease function. | (*any) | () |
| textColour | Colour of text. | (int, int, int) | (0, 0, 0) |
| fontSize | Size of text. | int | 20 |
| font | Font of text. | pygame.font.Font | sans-serif |
| textHAlign | Horizontal alignment of text. Can be 'centre', 'left' or 'right'. | str | 'centre' |
| borderColour | Colour of border. | (int, int, int) | (0, 0, 0) |
| borderThickness | Thickness of border. | int | 3 |
| borderRadius | Border radius. Set to 0 for no radius. | int | 0 |
