如何防止pygame应用程序停止响应

问题描述:

在这个循环中实际需要什么来保持程序不停止响应?如何防止pygame应用程序停止响应

import pygame 

pygame.init() 
program_display = pygame.display.set_mode((600, 800),pygame.RESIZABLE 
             | pygame.DOUBLEBUF) 
program_display.fill((0, 0, 210)) 
while True: 
    pygame.display.flip() 

附加:

还有一个更复杂的脚本,其中一个退出选项位于另一个循环,在另一个进程/线程。显示处理循环位于它自己的进程/线程中。如果可能的话,我怎么能有几个进程/线程运行,其中只有其中一个提供退出选项?

+0

嗯,这是一个无限循环,要避免这些。您需要添加一种方法来允许用户退出。 –

+0

@SpencerWieczorek这是唯一的方法吗?我编写了更高级的程序,其中一些程序也有无限循环。所有工作的人都有办法退出。这是我需要的吗?我在这个循环中需要它吗?我使用进程/线程,并且此选项位于另一个循环中。 – Andreas

+0

您的程序因为不处理任何事件而挂起。你需要对'pygame.event'模块中的函数进行某种调用。如果你不想处理事件,你应该调用'pygame.event.pump()'让pygame处理一些需要的内部操作。更多信息[这里](http://*.com/documentation/pygame/5110/event-handling#t=201703080502410474434)。 –

您忘记了退出功能

import pygame,sys 
from pygame.locals import * 
pygame.init() 
program_display = pygame.display.set_mode((600, 800),pygame.RESIZABLE 
             | pygame.DOUBLEBUF) 
program_display.fill((0, 0, 210)) 
while True: 
    for event in pygame.event.get(): 
     if event.type==QUIT: 
      pygame.quit() 
      sys.exit() 
    pygame.display.flip() 
+0

当我已经使用'pygame.display.flip()'时,为什么要使用'pygame.display.update()'?另外,不应该''pygame.display.update()'在循环内? – Andreas

+0

这是因为pygame.display.flip没有保存,只能翻转它。现在,你想让pygame成为一个GUI,而不是无法改变的图片。这就是为什么你需要告诉pygame在特定时间更新。 – Shaark16

+0

我只是喜欢你的版本。它不会阻止我的脚本挂起。 – Andreas