pygame全屏模式退出

时间:2018-03-31 20:31:59

标签: python pygame

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

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()

3 个答案:

答案 0 :(得分:3)

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

要退出游戏,你可以突破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.

答案 1 :(得分:1)

有一个布尔值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

答案 2 :(得分:0)

首先,我假设您使用Windows,并且该版本不是Windows Vista或更早版本。如果您使用的是macOS,那么我无能为力。

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

当我陷入全屏状态时,这些命令对我有用:

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

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