Как изменить цвет шрифта с помощью меню Pygame? - PullRequest
1 голос
/ 31 октября 2019

Я новичок в Pygame и пытался разработать скелетную программу, которую я нашел в Интернете. Проблема в том, что после успешного изменения цвета фона по требованию я также попытался изменить цвет шрифта. Сам код работает без ошибок, однако цвет не меняется.
Это код ниже:


from random import *
import pygame
import pygameMenu

pygame.init()

COLOR_BACKGROUND = []
WINDOW_SIZE = (640, 480)
COLOR_BLACK = (0, 0, 0)
COLOR_WHITE = (255, 255, 255)
MENU_BACKGROUND_COLOR = (228, 100, 36)
FONT_COLOUR = (0, 0, 0)
FONT = pygameMenu.font.FONT_HELVETICA
surface = pygame.display.set_mode(WINDOW_SIZE)


def main_background():
    global surface
    surface.fill(COLOR_BLACK)


def nothing():
    pass


def change_color_bg(value, c=None):
    color, _ = value
    if c == (-1, -1, -1):  # If random color
        c = (randrange(0, 255), randrange(0, 255), randrange(0, 255))
    surface.fill((c[0], c[1], c[2]))
    pygame.display.flip()


def change_color_font(value, c=None):
    global FONT_COLOUR
    global FONT

    color, _ = value
    if c == (-1, -1, -1):  # If random color
        c = (randrange(0, 255), randrange(0, 255), randrange(0, 255))
    FONT_COLOUR = (c[0], c[1], c[2])
    pygame.font.init()


def main(test=False):
    options_menu = pygameMenu.Menu(surface,
                                   bgfun=nothing,
                                   color_selected=COLOR_WHITE,
                                   window_width=WINDOW_SIZE[0],
                                   window_height=WINDOW_SIZE[1],
                                   font=FONT,
                                   font_size=25,
                                   font_color=FONT_COLOUR,
                                   font_size_title=50,
                                   menu_alpha=100,
                                   menu_color=MENU_BACKGROUND_COLOR,
                                   menu_height=int(WINDOW_SIZE[1] * 0.85),
                                   menu_width=int(WINDOW_SIZE[0] * 0.9),
                                   onclose=pygameMenu.events.DISABLE_CLOSE,
                                   title='Options',
                                   widget_alignment=pygameMenu.locals.ALIGN_LEFT,
                                   )

    # Add selector
    options_menu.add_selector('Change background color',
                              [('Random', (-1, -1, -1)),
                               ('Default', (128, 0, 128)),
                               ('Black', (0, 0, 0)),
                               ('Blue', (135, 206, 250))],
                              onchange=change_color_bg)
    options_menu.add_selector('Change font color',
                              [('Random', (-1, -1, -1)),
                               ('Default', (128, 0, 128)),
                               ('Black', (0, 0, 0)),
                               ('Blue', (135, 206, 250))],
                              onchange=change_color_font)

    options_menu.add_option('Go to Menu', pygameMenu.events.EXIT)
    options_menu.add_option('Leave', pygameMenu.events.EXIT)

    while True:

        main_background()

        options_menu.mainloop(disable_loop=test)

        if test:
            break


if __name__ == '__main__':
    main()

Буду признателен за любую помощь:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...