切换到 Pygame 全屏模式只工作一次
Switching to Pygame Fullscreen Mode working only one time
我是 pygame.FULLSCREEN 模式的新手,需要您的帮助。
我正在写一个小游戏,玩家应该可以在普通模式和全屏模式之间切换。
当我 运行 我的程序是 window 打开时,当我单击最大化按钮时,我进入全屏模式。当我按退出键时,我回到正常模式。目前一切正常。
但是,当我第二次单击最大化按钮时,window 被最大化,但是,我没有进入全屏模式。此外,pygame 使用的 window 部分保持正常大小。
这是我的代码:
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()
提前致谢!
每次调整window大小时,都会执行pygame.VIDEORESIZE
。因此,即使将 window 更改为较小的大小,也会出现 pygame.VIDEORESIZE
。
通过 event.set
获取 window 的新大小,并根据当前状态创建新的 pygame.FULLSCREEN
或 pygame.FULLSCREEN
显示
fullscreen
个。但是通过一个key设置fullscreen
,比如f。 pygame.event.post()
a new 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()
我是 pygame.FULLSCREEN 模式的新手,需要您的帮助。 我正在写一个小游戏,玩家应该可以在普通模式和全屏模式之间切换。
当我 运行 我的程序是 window 打开时,当我单击最大化按钮时,我进入全屏模式。当我按退出键时,我回到正常模式。目前一切正常。
但是,当我第二次单击最大化按钮时,window 被最大化,但是,我没有进入全屏模式。此外,pygame 使用的 window 部分保持正常大小。
这是我的代码:
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()
提前致谢!
每次调整window大小时,都会执行pygame.VIDEORESIZE
。因此,即使将 window 更改为较小的大小,也会出现 pygame.VIDEORESIZE
。
通过 event.set
获取 window 的新大小,并根据当前状态创建新的 pygame.FULLSCREEN
或 pygame.FULLSCREEN
显示
fullscreen
个。但是通过一个key设置fullscreen
,比如f。 pygame.event.post()
a new 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()