我如何在一个循环中退出并打印事件

时间:2017-12-10 12:01:59

标签: python pygame

import pygame

pygame.init()

x = height,width = (800,600)

Display = pygame.display.set_mode(x)


pygame.display.set_caption("Blocky")

red = (157, 139, 215)
black = (0,0,0)

Display.fill(red)

pygame.draw.rect(Display,black,(120,450,600,50))

#It updates every frame

pygame.display.update()

excape = False

while not excape:
    for dork in pygame.event.get():  
      print(dork)
    if pygame.event == pygame.QUIT:
        pygame.quit()
        quit()

Here's the result

这里打印(dork)正在工作但是当我点击窗口的退出按钮时它根本不会退出.. 那么我如何打印事件并在1循环中退出应用程序?

2 个答案:

答案 0 :(得分:3)

首先,你应该在while而不是excape循环中更新屏幕。 其次,如果pygame.event等于True,则将excape设置为pygame.QUIT。 所以你的代码看起来像这样:

import pygame, sys

pygame.init()

x = height,width = (800,600)

Display = pygame.display.set_mode(x)


pygame.display.set_caption("Blocky")

red = (157, 139, 215)
black = (0,0,0)

Display.fill(red)

pygame.draw.rect(Display,black,(120,450,600,50))

#It updates every frame


excape = False

while not excape:
    for event in pygame.event.get():  
      print(event)
      if event.type == pygame.QUIT:
          excape = True
          pygame.quit()
          sys.exit()
    pygame.display.update()

答案 1 :(得分:1)

您需要遍历每个pygame事件并检查该事件是否已退出。

while not excape:
    for event in pygame.event.get():
        print(event)
        if event.type == pygame.QUIT:
            pygame.quit()
            excape = True