Переход в полноэкранный режим Pygame работает только один раз - PullRequest
1 голос
/ 16 июня 2020

Я новичок в режиме pygame.FULLSCREEN, и мне нужна ваша помощь. Я пишу небольшую игру, в которой игрок должен иметь возможность переключаться между нормальным режимом и полноэкранным режимом.

Когда я запускаю свою программу, открывается окно, и когда я нажимаю на кнопка «развернуть» Я перехожу в полноэкранный режим. Когда я нажимаю escape, я возвращаюсь в нормальный режим. Пока все работает нормально.

Но когда я нажимаю кнопку развертывания во второй раз, окно становится развернуто , однако я не попадаю в полноэкранный режим. Кроме того, часть окна, которую использует pygame, остается нормального размера.

Вот мой код:

import pygame

pygame.init()

width = 500
height = 500

info = pygame.display.Info()
screen_width = info.current_w
screen_height = info.current_h

window = pygame.display.set_mode((width, height), pygame.RESIZABLE)

fullscreen = False

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()
        elif event.type == pygame.VIDEORESIZE:
            window = pygame.display.set_mode((screen_width, screen_height), pygame.FULLSCREEN)
            fullscreen = True

        keys = pygame.key.get_pressed()

        if keys[pygame.K_ESCAPE] and fullscreen:
            window = pygame.display.set_mode((width, height), pygame.RESIZABLE)
            fullscreen = False

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

Заранее спасибо!

1 Ответ

0 голосов
/ 16 июня 2020

pygame.VIDEORESIZE выполняется каждый раз при изменении размера окна. Следовательно, даже если окно изменяется на меньший размер, возникает pygame.VIDEORESIZE. Получите новый размер окна на event.set и создайте новый дисплей pygame.FULLSCREEN или pygame.FULLSCREEN в зависимости от текущего состояния fullscreen. Но задайте fullscreen ключом, например f . pygame.event.post() новый pygame.event.Event() с правильными аргументами:

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()

        elif event.type == pygame.VIDEORESIZE:
            type = pygame.FULLSCREEN if fullscreen else pygame.RESIZABLE
            window = pygame.display.set_mode(event.size, type)

        elif event.type == pygame.KEYDOWN:
            if not fullscreen and event.key == pygame.K_f:
                fullscreen = True
                pygame.event.post(pygame.event.Event(pygame.VIDEORESIZE, size = (screen_width, screen_height)))
            if fullscreen and event.key == pygame.K_ESCAPE:
                fullscreen = False
                pygame.event.post(pygame.event.Event(pygame.VIDEORESIZE, size = (width, height)))

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

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