I'm trying to add a dropdown to pygame_menu that displays the days of the month '1'-'31' (or '01'-'31') however when I select the dropdown while running, it displays just the leftmost character. The most concise code that will run is below
import pygame
import pygame_menu as pm
import sys
from pygame.locals import *
WIDTH, HEIGHT = 1100, 800
WIN = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.init()
my_theme = pm.themes.THEME_DARK.copy()
my_theme.title = False
my_theme.background_color = color_opaque = (50, 100, 200)
setup_menu = pm.Menu('', WIDTH, HEIGHT)
days = ['01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31']
####
setup_menu.add.dropselect('Days',items=days, placeholder_add_to_selection_box=False)
####
def main():
run = True
clock = pygame.time.Clock()
while run:
clock.tick(60)
for event in pygame.event.get():
if event.type == QUIT:
run = False
pygame.display.quit()
pygame.quit
sys.exit()
break
if setup_menu.is_enabled():
setup_menu.update(pygame.event.get())
setup_menu.mainloop(WIN)
pygame.display.update()
if __name__ == "__main__":
main()
The above code produces the following
Any advice would be greatly appreciated. Thank you
The problem is with your days
list. According to the documentation, you need to create a list of tuples:
The items of the DropSelect are:
items = [('Item1', a, b, c...), ('Item2', d, e, f...)]
Also, note that if you create tuples with a single item, only the first character of each item will be displayed. For example:
days = [('Mon'), ('Tue'), ('Wed')]
Would display 'M', 'T' and 'W' on the dropdwon menu. So if you want to display the full text, add empty strings to each tuple:
days = [('Mon', ''), ('Tue', ''), ('Wed', '')]
Here is a working version of your code:
import pygame
import pygame_menu as pm
import sys
from pygame.locals import *
WIDTH, HEIGHT = 1100, 800
WIN = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.init()
my_theme = pm.themes.THEME_DARK.copy()
my_theme.title = False
my_theme.background_color = color_opaque = (50, 100, 200)
setup_menu = pm.Menu('', WIDTH, HEIGHT)
# use a list of tuples instead
characters = [
('Kaboom Bot', 'Mech'), ('Impulsive Trickster', 'Demon'), ('Low-Flier', 'Dragon'),
('Menagerie Mug', 'None'), ('Murcules', 'Murloc'), ('Tad', 'Murloc')]
####
setup_menu.add.dropselect('Characters',items=characters, placeholder_add_to_selection_box=False)
####
def main():
run = True
clock = pygame.time.Clock()
while run:
clock.tick(60)
for event in pygame.event.get():
if event.type == QUIT:
run = False
pygame.display.quit()
pygame.quit
sys.exit()
break
if setup_menu.is_enabled():
setup_menu.update(pygame.event.get())
setup_menu.mainloop(WIN)
pygame.display.update()
if __name__ == "__main__":
main()