如何让Pygame Zero窗口全屏显示?

6

我正在使用易于使用的Python库pgzero(内部使用pygame)来编程游戏。

如何使游戏窗口全屏显示?

import pgzrun

TITLE = "Hello World"

WIDTH  = 800
HEIGHT = 600

pgzrun.go()

注意:我正在使用运行时辅助库pgzrun,使游戏可以在没有操作系统shell命令的情况下运行。它隐式地导入了pgzero库...
编辑:pgzero在内部使用pygame,也许可以使用pygame API更改窗口模式...

1
可能是重复的问题:https://dev59.com/a1wZ5IYBdhLWcg3wYfVu - Narasimha Prasanna HN
@NarasimhaPrasannaHN 这个问题是如何使用Pygame Zero来实现。 - Rabbid76
2个回答

10
你可以通过 screen.surface 访问表示游戏屏幕的 Pygame 表面(surface),并且你可以通过 draw() 中的 pygame.display.set_mode() 来更改表面。例如:
import pgzrun
import pygame

TITLE = "Hello World"

WIDTH  = 800
HEIGHT = 600

def draw():
    screen.surface = pygame.display.set_mode((WIDTH, HEIGHT), pygame.FULLSCREEN)

pgzrun.go()

当按下f键时切换到全屏模式,当按下w键时返回窗口模式,分别在按键按下事件(on_key_down)中实现:

import pgzrun
import pygame

TITLE = "Hello World"

WIDTH  = 800
HEIGHT = 600

def on_key_down(key):
    if key == keys.F:
        screen.surface = pygame.display.set_mode((WIDTH, HEIGHT), pygame.FULLSCREEN)
    elif key == keys.W:
        screen.surface = pygame.display.set_mode((WIDTH, HEIGHT))

pgzrun.go()

非常好的回答 :-) 我忘了问如何从运行代码后现在得到的黑屏中逃脱。默认模式是什么(我会添加一个键处理程序来结束“游戏”,然后再次看到正常的桌面)... - R Yoda
1
@RYoda,你可以使用on_key_down来在全屏和窗口模式之间切换。我已经扩展了答案。 - Rabbid76
2
@RYoda 在任何 Pygame Zero 游戏中,按 Ctrl-Q 都会退出游戏(在 Mac 上可能是 Cmd-Q)。 - Mauve
上面的第一个例子(没有键处理)非常引人注目,但如果你只在第一次调用draw()时设置screen.surface,它就能很好地工作! - michael

-2
import pgzrun
import pygame

TITLE = "Hello World"

WIDTH  = 800
HEIGHT = 600

def draw():
    screen.surface = pygame.display.set_mode((WIDTH, HEIGHT), pygame.FULLSCREEN)

pgzrun.go()

1
欢迎来到SO!你能否解释一下你的答案,因为它看起来包含了Rabbid76已经接受的答案完全相同的代码吗?谢谢! - R Yoda

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接