【问题标题】:Switching to Pygame Fullscreen Mode working only one time切换到 Pygame 全屏模式只能工作一次
【发布时间】:2020-06-16 15:41:15
【问题描述】:

我是 pygame.FULLSCREEN 模式的新手,我需要你的帮助。 我正在写一个小游戏,其中玩家应该能够在普通模式和全屏模式之间切换。

当我运行我的程序时,窗口打开,当我点击最大化按钮时,我进入全屏模式。当我按下退出键时,我回到正常模式。到目前为止一切正常。

但是,当我第二次单击最大化按钮时,窗口最大化,但是,我没有进入全屏模式。此外,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】:

    每次调整窗口大小时都会执行pygame.VIDEORESIZE。因此,即使将窗口更改为更小的尺寸,也会出现pygame.VIDEORESIZE。 通过event.set获取窗口的新大小,并根据当前状态创建新的pygame.FULLSCREENpygame.FULLSCREEN显示 的fullscreen。但是通过键设置fullscreen,例如fpygame.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()
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-09
      相关资源
      最近更新 更多