gpt4 book ai didi

python - 通过键盘事件退出pygame全屏显示,同时做其他事情

转载 作者:行者123 更新时间:2023-11-28 18:03:51 25 4
gpt4 key购买 nike

我想通过按 f 退出 pygame 显示的全屏模式。我知道我可以通过以下方式存档退出全屏:

pygame.display.toggle_fullscreen()

并通过以下方式获取键盘事件:

    for event in pygame.event.get(): 
if event.type == KEYDOWN:
logging.warning("event")
if event.key == K_f:
logging.info("TOGGLE: toggle fullscreen")
return 1

我的问题是我需要离开初始化显示的函数。在有事件发生之前,我不能呆在那里。但是我注意到在这个函数之外获取键盘事件是行不通的(没有显示 ->没有键盘)。由于我不能有两个显示器,我可以为键盘事件记下“假”一个。如果没有相关事件,我也不想再次重建我的显示(否则我可能只是不时调用初始化函数并在其中检查我的事件)。

是否可以禁止pygame使用键盘?所以我可以使用 Keyboardinterrupt 退出全屏吗?我错过了什么吗?感谢您的任何帮助。我希望这不会造成混淆。

最佳答案

documentation对于 pygame.display.toggle_fullscreen() 状态:

This function only works under the UNIX X11 video driver. For most situations it is better to call pygame.display.set_mode() with new display flags.

所以看起来您可能必须重新创建顶层表面。

这是实现此功能的最小示例:

import pygame
pygame.init()

def init_screen(full=False):
resolution = (1024, 768)
if full:
return pygame.display.set_mode(resolution, pygame.FULLSCREEN)
else:
return pygame.display.set_mode(resolution)

full_screen = False
screen = init_screen(full_screen)
finished = False
clock = pygame.time.Clock() #for limiting FPS
while not finished:
for event in pygame.event.get():
if event.type == pygame.QUIT:
finished = True
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
finished = True
elif event.key == pygame.K_f:
full_screen = not full_screen
screen = init_screen(full_screen)
if full_screen:
screen.fill(pygame.color.Color("grey"))
else:
screen.fill(pygame.color.Color("aquamarine"))
pygame.display.flip()
clock.tick(60)
pygame.quit()

如果您需要任何进一步的说明,请告诉我们。

关于python - 通过键盘事件退出pygame全屏显示,同时做其他事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54695954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com