python - 切换到 Pygame 全屏模式只能工作一次
问题描述
我是 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()
提前致谢!
解决方案
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()
推荐阅读
- oracle - 如何在 Alias Oracle PL/SQL 中使用变量
- javascript - Ajax 没有获取最新版本的 JSON 文件
- python - 在 python sklearn 中对一维数组使用高斯混合
- perl - HTTP::Request 在标头中用连字符替换下划线
- graphql - GitHub GraphQL api 说还有另一个页面,但是使用游标时找不到结果
- r - 比较数据框中的 xy 坐标
- python - 不使用 async-await 的 Python 代码
- javascript - 操作图标未显示 Krajee 文件输入
- ruby-on-rails - 为什么我在 Rails 网站上的链接使用“GET”动词?
- python - 使用 Google Cloud AutoML 模型预测存储在 Firebase 功能中的 Google Cloud 存储中的图像