切换到Pygame全屏模式只工作一次

问题描述 投票:0回答:1

我是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()

先谢谢你!

python pygame fullscreen
1个回答
0
投票

鏄ㄥ䌹䌹䌹䌹䌹䌹䌹䌹䌹䌹䌹䌹䌹䌹䌹䌹䌹䌹䌹䌹䌹䌹䌹䌹䌹䌹䌹䌹䌹 pygame.VIDEORESIZE 在每次调整窗口大小时都会被执行。因此,即使窗口被改变为较小的尺寸,那么 pygame.VIDEORESIZE 获取窗口的新尺寸,方法如下 event.set 并创建一个新的 pygame.FULLSCREENpygame.FULLSCREEN 根据当前状态显示 fullscreen. 但是设置 fullscreenf. 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()

© www.soinside.com 2019 - 2024. All rights reserved.