Python pygame仅在屏幕上显示灰色窗口

Python pygame仅在屏幕上显示灰色窗口,python,pygame,Python,Pygame,我一直在尝试使用pygame来显示游戏场景,但它似乎已经停止了对我的工作:在pygame关闭之前,它只在我创建的任何屏幕上显示一个灰色框,然后屏幕上应该显示的内容在退出之前短暂闪烁。例如,下面的最小代码显示灰色屏幕5秒钟,然后快速闪烁黑色并退出: import pygame as pg import time pg.init() sc = pg.display.set_mode((600,600)) sc.fill((0,0,0)) pg.display.flip() time.sleep(5)

我一直在尝试使用pygame来显示游戏场景,但它似乎已经停止了对我的工作:在pygame关闭之前,它只在我创建的任何屏幕上显示一个灰色框,然后屏幕上应该显示的内容在退出之前短暂闪烁。例如,下面的最小代码显示灰色屏幕5秒钟,然后快速闪烁黑色并退出:

import pygame as pg
import time
pg.init()
sc = pg.display.set_mode((600,600))
sc.fill((0,0,0))
pg.display.flip()
time.sleep(5)
这似乎是屏幕显示的问题,而不是pygame本身的问题,因为我可以使用pg.image.save()制作曲面并将其保存到图像文件中,它们在那里看起来很好

这是我升级到OSX 10.12后第一次尝试使用pygame在屏幕上显示。这是使用Python2.7和PyGame1.9.3(从pip下载,但bitbucket的dev1.9.4版本也存在问题)。所有sdl依赖项都是最新版本(根据自制)

然而,我现在不知道如何进行更多的故障排除,因为我对pygame如何与显示器进行通信的内部信息了解不够。我还能做些什么来帮助找到问题的根源并纠正它吗


谢谢大家!

您需要一个持续执行以下操作的游戏循环:

  • 调用pygame.display.flip()--这将使用新的更改更新屏幕
  • 调用pygame.event.get()--这是最重要的,因为否则,事件队列将不会刷新,操作系统将假定您的程序没有响应。PyGame中不能有类似于
    睡眠(5)
    的东西
这不是pygame的工作方式。您不能简单地使用time.sleep()来显示东西,因为pygame是专门为有一个主循环而设计的。谢谢!问题似乎出在event.get()调用上。我想我过去一直在使用它,不知道这是一个要求。但是您不需要循环——如果我在pg.display.flip()之后添加pg.event.get(),代码就可以正常工作,它将显示,是的。但你仍然需要这个循环。当应用程序未主动且持续地泵送事件队列时,该应用程序没有响应。例如,在这5秒钟内尝试关闭或移动窗口。