【问题标题】:pygame fullscreen mode exitpygame全屏模式退出
【发布时间】:2020-01-05 18:31:15
【问题描述】:

我正在运行这个小程序,它以全屏模式将图像加载到屏幕上,但一旦加载,该程序将不会通过任何组合键退出,我最终不得不重置计算机以完成我正在做的任何其他事情。

import pygame

pygame.init()
WIDTH=1366; HEIGHT=768
screen = pygame.display.set_mode((WIDTH, HEIGHT), pygame.FULLSCREEN)
pygame.display.set_caption('Katso')
PENGUIN = pygame.image.load("assets/download.png")
MICKEY = pygame.image.load("assets/mickey.jpg")
ADV = pygame.image.load("assets/adv.jpg")
CAT = pygame.image.load("assets/cat.jpg")
FLV = pygame.image.load("assets/flavours.jpg")
HALL = pygame.image.load("assets/hallway.jpg")
x = 0; # x coordnate of image
y = 0; # y coordinate of image
screen.blit(PENGUIN,(x,y)); pygame.display.update()
running = True
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.QUIT()
        if event.type == pygame.KEYDOWN and event.key == pygame.K_1:
            screen.blit(MICKEY,(x,y)); pygame.display.update()
        if event.type == pygame.KEYDOWN and event.key == pygame.K_2:
            screen.blit(PENGUIN,(x,y)); pygame.display.update()
        if event.type == pygame.KEYDOWN and event.key == pygame.K_3:
            screen.blit(ADV,(x,y)); pygame.display.update()
        if event.type == pygame.KEYDOWN and event.key == pygame.K_4:
            screen.blit(FLV,(x,y)); pygame.display.update()
        if event.type == pygame.KEYDOWN and event.key == pygame.K_5:
            screen.blit(CAT,(x,y)); pygame.display.update()
        if event.type == pygame.KEYDOWN and event.key == pygame.K_6:
            screen.blit(HALL,(x,y));pygame.display.update()
pygame.QUIT()

【问题讨论】:

    标签: python pygame


    【解决方案1】:

    pygame.QUIT 是一个常量值(整数),用于检查事件的类型。要取消初始化 pygame,您必须调用 pygame.quit()(小写),但这实际上不会退出您的游戏,而只会取消初始化加载的 pygame 模块。我认为只有在基于 tkinter 的编辑器(如 IDLE)中开始游戏时才需要关闭窗口。

    要退出游戏,您可以跳出 while 循环,让 Python 像往常一样结束程序,或者您可以调用 sys.exit()

    由于您无法在全屏模式下单击“x”按钮来关闭窗口,因此您必须使用 Esc 之类的键。

    running = True
    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    running = False  # Set running to False to end the while loop.
    

    【讨论】:

    • 你也可以toggle the display mode
    • 很好用 出于某种原因,alt f4 在无帧模式下工作,所以我认为它在全屏模式下也能正常工作。
    【解决方案2】:

    有一个布尔值,running,没有被使用。

    而不是这个:

    running = True
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.QUIT()
    

    ...考虑这样做:

    running = True
    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
    

    【讨论】:

    【解决方案3】:

    首先我假设您使用的是 Windows,并且该版本不是 Windows Vista 或更早版本。如果你使用的是 macOS,那我帮不了你。

    如果这些都不起作用,并且您最终会卡住并不得不重新启动计算机,那么这将对您有所帮助。

    当我卡在全屏模式时,这些命令对我有用:

    • Ctrl + Esc
    • 只需按下 (窗口)键

    它们都做同样的事情,它将pygame打开的窗口一直推到后面,打开窗口侧边栏,从而显示任务栏。它实际上不会停止运行程序,因此如果您单击代表您的输出的徽标,它只会回到全屏状态。

    【讨论】:

      猜你喜欢
      • 2014-03-25
      • 2023-03-19
      • 2012-03-29
      • 2014-12-15
      • 1970-01-01
      • 2017-11-16
      • 2023-04-03
      • 1970-01-01
      • 2014-03-07
      相关资源
      最近更新 更多