【发布时间】:2022-02-04 13:12:30
【问题描述】:
在我开始之前,这不是 How do you start Pygame window maximized? 的重复 我在不运行 win32gui 和 win32con 库的 Linux 上。
如标题所述,我正在尝试做的是在运行时最大化我的 pygame 窗口。我不希望通过在 pygame.display.set_mode() 中使用 pygame.FULLSCREEN 标签来全屏显示游戏。我希望它最大化。
我目前最大化它的方法是创建带有 pygame.RESIZEABLE 标志的窗口,它允许我获取 pygame.VIDEOEXPOSE 事件,如下例所示。
import pygame, sys
SCREEN_WIDTH,SCREEN_HEIGHT = 1280,720
SCREEN = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT), pygame.RESIZABLE, 32, vsync=1)
objects = pygame.Surface((SCREEN_WIDTH, SCREEN_HEIGHT))
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.VIDEORESIZE:
SCREEN.blit(pygame.transform.scale(objects, event.dict['size']), (0, 0))
pygame.display.update()
elif event.type == pygame.VIDEOEXPOSE: # handles window minimising/maximising
SCREEN.fill((0, 0, 0))
SCREEN.blit(pygame.transform.scale(objects, SCREEN.get_size()), (0, 0))
pygame.display.update()
pygame.display.update()
对象表面只是我将游戏对象绘制到的表面,以便在调整窗口大小时缩放它们。如果您想知道为什么我不只是通过使用系统信息获取屏幕宽度和高度来将其设置为屏幕大小,因为这样我的对象无法正确缩放。我能够正确缩放对象的唯一方法是使用 VIDEORESIZE 和 VIDEOEXPOSE 事件。如果有办法自动按下最大化按钮或在 pygame 中开始最大化,那就太好了。
【问题讨论】:
标签: python pygame window resize pygame-surface