2012-03-19 2 views
0

잠시 후에 파이썬을 3.2에서 3.1로 업데이트하지 않았습니다. 파이 게임 프로그램을 종료하는 이전 방법은 아래 코드에 나와 있습니다. 지금은 역 추적 메시지를 수신하고 있습니다 : 혼란스러워서 넘겨주기 및 종료

Traceback (most recent call last): 
    File "C:\Python32\Nero\gogo.py", line 24, in <module> 
    terminate() 
    File "C:\Python32\Nero\gogo.py", line 18, in terminate 
    sys.exit() 
SystemExit 

는 지금은하지만 오류가 결국 어디 그것의 무엇을 수집 할 수 있습니다에서, 역 추적을 기억하지 않습니다. 과거에는 오류가 발생하지 않았습니다. sys.exit() 대신 exit()를 사용했지만 프로그램 종료를 확인하고 셸도 닫습니다 (둘 다 발생하고 싶지 않음). 일부 Google 검색을 수행하고 비슷한 다양한 문의를 발견했지만이 오류를 이해하고 해결하는 가장 좋은 방법은 아직 확실하지 않습니다. 프로그램은 여전히 ​​정상적으로 작동합니다. 방금 오류가 큰 프로그램에서 동일하게 유지되므로 관련 부품을 분리했습니다.

내 코드 :

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

os.environ['SDL_VIDEO_CENTERED'] = '1' 
pygame.init() #Initializing Pygame 

screen=pygame.display.set_mode((500,500) ,0,0) 
pygame.display.set_caption("Boo!") 
pygame.mouse.set_visible(True) 
clock=pygame.time.Clock() 
fps=40 

#Functions: 

def terminate(): 
    pygame.quit() 
    sys.exit() 

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

감사합니다!

+0

'terminate()'로 인용 한 마지막 줄에서'sys.exit()'를 바꾸어보십시오. – ulidtko

+0

쉘에서이 스크립트를 시작하거나 Windows GUI에서이 스크립트를 두 번 누르십니까? – jdi

+0

셸에서 시작. terminate()로 대체 된 Sys.exit는 불행히도 아무것도 변경하지 않은 것처럼 보입니다. 나는 쉘에서 달리고있다. – Dinoberry

답변

0

필자는 이것을 Win7 w/python 3.2 32bit 및 pygame 1.9.2a0에서 테스트했으며 그 결과가 없습니다.

보고있는 내용은 실제 "오류"가 아니며 SystemExit 예외인데 sys.exit()을 호출하면 예외가 발생합니다. refer to the docs 인 경우 모든 호출이 예외를 발생시키는 것을 볼 수 있습니다. 다른 것이 처리하지 않으면 주 스레드가 종료됩니다. 이것은 조용한 것으로 간주됩니다 (보고있는 스택 추적 없음). 불행히도이 스택 추적을 보는 이유는 무엇입니까?

GUI에서 스크립트를 시작하는 경우 쉘의 창이 GUI 창과 함께 열리지 않도록 스크립트의 .pyw 확장 버전을 만들어야합니다. 어쩌면 출력물을 보지 못하게하는 데 차이가있을 수 있습니까?

또한 실제로는 sys.exit이 아닌 while 루프에서 직접 terminate() 메서드를 호출하고 있는지 확인하십시오.

+0

나는 terminate()를 호출 한 것처럼 보이고 오류를 제거하기 위해 여러 가지를 시도 할 때 sys.exit을 잘못 게시 했어야합니다. .pyw로 실행 해 보았지만 아무 것도 변경되지 않았습니다. 프로그램에서 진짜 문제가 아닌 한 나를 귀찮게하지 않지만 제거 방법을 알아낼 수 있으면 여기에서 업데이트 할 것입니다. 감사합니다. – Dinoberry