Python pygame窗口在运行后停止响应

Python pygame窗口在运行后停止响应,python,pygame,Python,Pygame,每当我启动程序时,shell都会工作,但pygame窗口会立即停止响应。我以前在pygame上画过东西,但这是第一次。没有错误消息,当我将光标悬停在上面时,它是加载符号,过了一会儿windows会要求我等待或停止程序。(我使用javascript中的代码片段,但代码是python的。很抱歉我的新手编码布局。) 执行此操作时: sleep(5) …您让整个解释器休眠5秒钟,在此期间它无法响应任何事件、更新屏幕或执行任何其他操作 然后调用这个函数: multitype('type up to go

每当我启动程序时,shell都会工作,但pygame窗口会立即停止响应。我以前在pygame上画过东西,但这是第一次。没有错误消息,当我将光标悬停在上面时,它是加载符号,过了一会儿windows会要求我等待或停止程序。(我使用javascript中的代码片段,但代码是python的。很抱歉我的新手编码布局。)

执行此操作时:

sleep(5)
…您让整个解释器休眠5秒钟,在此期间它无法响应任何事件、更新屏幕或执行任何其他操作

然后调用这个函数:

multitype('type up to go up, left to go left, right to go right and down to go down',2)
…它还一次执行一系列
睡眠
s秒,而不处理事件

然后,进入一个等待
input()
的循环。只要它在等待键盘输入,它就不会再处理事件

忽略事件和更新几秒钟后,Windows将检测到该程序没有响应,并询问您是要等待还是停止该程序

如果你想让你的应用程序响应,你需要处理事件,并每秒至少调用
pygame.display.update()
。这意味着要打破长时间的睡眠

如果你学习了任何PyGame教程,将会有一节介绍延迟游戏逻辑的方法,而不涉及挂起整个程序。两个主要选项是编写帧循环(无论发生什么情况,它每秒更新X次)或事件循环(只要操作系统说有事件,它就会更新)。然后,与睡眠(5)不同,你必须跟踪你想做下一件事的时间,保持循环,并在到达该时间时做下一件事


这意味着
input
和PyGame通常不能很好地配合使用。您可以通过使用后台线程、使用非阻塞stdin或其他方式强制他们玩得很好,但没有简单的修复方法。(大多数游戏和GUI都是从图形窗口中获取输入,而不是从控制台获取输入。)

谢谢!我想我现在就直接用键盘输入
multitype('type up to go up, left to go left, right to go right and down to go down',2)