【问题标题】:How do I start a pygame app in maximized mode on Linux?如何在 Linux 上以最大化模式启动 pygame 应用程序?
【发布时间】: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


    【解决方案1】:

    刚刚在 pygame github 上找到了this issue,供任何需要的人使用。本质上只是使用 pygame 用来绘制跨平台窗口的库。

    这是对我有用的问题上的代码 sn-p。

    import sys
    import pygame
    import pygame._sdl2
    import time
     
    pygame.init()
    screen = pygame.display.set_mode((400, 400), pygame.RESIZABLE)
    window = pygame._sdl2.Window.from_display_module()
    clock = pygame.time.Clock()
    
    window.maximize()
    
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
         
        screen.fill((255, 255, 255))
         
        pygame.display.flip()
        clock.tick(30)
    

    我希望这对遇到类似问题的人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-24
      • 2023-01-03
      • 2021-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多