Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pygame窗口在几秒钟后没有响应_Python_Pygame - Fatal编程技术网

Python Pygame窗口在几秒钟后没有响应

Python Pygame窗口在几秒钟后没有响应,python,pygame,Python,Pygame,这段简单的代码在几秒钟(大约5秒钟)后崩溃(窗口没有响应) 如果我取消注释注释注释行,我可以清楚地看到程序在显示47到50之间的值时失控 我使用python 2.7和pygame 1.9.2、Windows 8(64位)和Eclipse+PyDev。在while循环开始时调用pygame.event.get()。您需要定期调用模块中的四个函数之一,以便pygame与您的操作系统进行内部交互。否则操作系统会认为你的游戏崩溃了。因此,请确保调用其中一个: pygame.event.get()返回事

这段简单的代码在几秒钟(大约5秒钟)后崩溃(窗口没有响应)

如果我取消注释注释注释行,我可以清楚地看到程序在显示47到50之间的值时失控


我使用python 2.7和pygame 1.9.2、Windows 8(64位)和Eclipse+PyDev。

在while循环开始时调用
pygame.event.get()

您需要定期调用模块中的四个函数之一,以便pygame与您的操作系统进行内部交互。否则操作系统会认为你的游戏崩溃了。因此,请确保调用其中一个:

  • pygame.event.get()
    返回事件队列中当前所有事件的列表
  • pygame.event.poll()
    从事件队列返回单个事件,或者
    pygame.NOEVENT
    如果队列为空
  • pygame.event.wait()
    从事件队列中返回单个事件,或等待事件返回
  • pygame.event.pump()
    允许pygame处理内部操作。当您不想处理事件队列中的事件时非常有用

窗口不响应(冻结),因为您不处理事件。您必须通过或来处理事件,以保持窗口响应

见以下文件:

对于游戏的每一帧,您都需要对事件队列进行某种调用。这确保了您的程序可以在内部与操作系统的其余部分交互

添加事件循环,例如:

run=True
运行时:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
# [...]
或者,只需泵送事件:

为True时:
pygame.event.pump()
# [...]


最简单的例子:

我只能说:它适用于Python 2.7、PyGame 1.9.2、Linux Mint(32位)、Geany。你是从Eclipse还是终端运行它?哇!聪明!正是这样!谢谢如果您不使用pygame事件,那么您可以使用
pygame.event.pump
而不是
pygame.event.get
。如果调用事件队列的时间过长,系统可能会判定您的程序已锁定
import pygame
from pygame.locals import *

pygame.init()
screen = pygame.display.set_mode((640, 480), 0, 24)
#clock = pygame.time.Clock()

#font = pygame.font.Font(None, 32)

cycles = 0
while True:
    screen.fill(0)
#    text = font.render('Cycles : %d' % cycles, True, (255, 255, 255))
#    screen.blit(text, (100, 100))

    cycles += 1

    pygame.display.update()