问题在pygame的sys.exit()(Issue with sys.exit() in pyga

2019-09-19 11:54发布

我正在学习使用pygame的,当我使用sys.exit()我遇到一个问题。 下面是代码:

import pygame, sys,os
from pygame.locals import * 

pygame.init() 

window = pygame.display.set_mode((468, 60)) 
pygame.display.set_caption('Game') 
screen = pygame.display.get_surface() 

file_name = os.path.join("data","image.bmp")

surface = pygame.image.load(file_name)

screen.blit(surface, (0,0)) 
pygame.display.flip() 

def input(events): 
   for event in events: 
      if event.type == QUIT: 
         sys.exit(0) 
      else: 
         print event 

while True: 
   input(pygame.event.get()) 

这真的只是从pygame的教程中的代码。 当我真正尝试退出时出现问题,无论我尝试什么事件来使用sys.exit()

Traceback (most recent call last):
  File "C:/Python27/Lib/site-packages/pygame/examples/test.py", line 25, in <module>
    input(pygame.event.get())
  File "C:/Python27/Lib/site-packages/pygame/examples/test.py", line 20, in input
    sys.exit(0)
SystemExit: 0

......然后程序不会退出。 我在做什么错在这里? 因为我没有注意到,此代码是为Python的一个过时版本。

Answer 1:

sys.exit只是抛出一个异常(一个SystemExit例外)。 这有两个不寻常的效果:

  1. 它只有退出当前线程在多线程应用程序
  2. 唯一的例外可能已被抓获。


Answer 2:

sys.exit() 

孤单是一个有点邪恶与pygame的..退出pygame的应用程序的正确方法是先跳出主循环的然后退出pygame的则退出程序。 即。

while running == True:
    # catch events
    if event_type == quit:
        running = False  # breaks out of the loop

pygame.quit()  # quits pygame
sys.exit()

同时,在我看来,你是不是正确捕捉事件..它应该是

if event.type == pygame.QUIT:

您可以阅读pygame的更多事件在这里 。



Answer 3:

我解决了这个问题,正确的代码如下:

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

    screen.blit(background, (0,0))
    pygame.display.update()

pygame.quit() # Call the quit() method outside the while loop to end the application.


Answer 4:

我已经在一些源读取存在主循环之间()中的Tkinter它运行Python的壳和Pygame.init()的sys.exit()命令如下其中冲突。

该建议是在命令行中运行的游戏中获得一轮问题,而不是加载在shell上使用的游戏运行(F5)。

这方面的一个很好的副作用是,在我的太空侵略者游戏,这确实很多变量更新:35次第二,是动画,而从它不好跑,是生涩的外壳正确运行。

如果我使用下面的代码:

if event.type == QUIT:
    pygame.quit()
    sys.exit()

游戏正确退出但在这对游戏没有影响,并且在很大程度上是多余的壳留下一个错误消息。 这仅仅是一个难看一点。 这并不在命令行中发生。

摘要:尝试在命令行运行游戏,以避免Tkinter的问题



文章来源: Issue with sys.exit() in pygame
标签: python pygame