2014-02-09 80 views
0

我使用GUI运行Pygame窗口。例如,当用户点击GUI上的按钮时,会出现Pygame窗口。但是,当我想要退出Pygame窗口时,我的GUI也退出了。我敢肯定,这是怎么一回事,因为下面的代码行:只退出Pygame窗口

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

sys.exit()退出一切,这就是为什么IDE与Pygame的窗口关闭。但是,我怎样才能关闭Pygae窗口?我试过这个:

for event in pygame.event.get(): 
      if event.type==pygame.QUIT: 
       pygame.quit() 
       break 

但是这并不奏效。有什么建议么?

使用PyQt4的与Python 3

+0

什么“不工作”?建议什么? – ekhumoro

+0

我的替代代码只关闭Pygame窗口而不是pygame窗口和GUI窗口 –

+2

当然:但是第二种情况下实际发生了什么? pygame窗口是否关闭,窗口是否关闭,窗口是否关闭,或者究竟是什么? – ekhumoro

回答

1

我猜您的代码段

for event in pygame.event.get(): 
    if event.type==pygame.QUIT: 
     pygame.quit() 
     break 

是你的主循环的一部分,在while循环中运行的GUI IM,像

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

问题是,break将退出for循环,而不是while循环,最终导致异常,因为你退出pygame的,但很可能试图绘制画面等等,等等

一个简单的解决方法是使用一个变量作为条件你while循环,像

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

,或者确保退出while回路

while True: 
    if pygame.event.get(pygame.QUIT): # only check for QUIT event 
     break 
    for event in pygame.event.get(): 
     ...