为什么在pygame.event.get不pygame的冻结()当你移动/拖动窗口?(Why doe

2019-09-16 12:23发布

基本上我有一个循环(剔,set_caption,screen_fill,event.get(),send_frame_event,翻转,重复)

当我拖动窗口周围的Windows 7,循环停止循环,最后我被困在pygame.event.get(),我试图定义某些事件只对GET如GET([pygame.QUIT])无济于事。

简单的拖动/移动窗口时调用pygame.event.clear()具有相同的冷冻效果。

有没有解决办法?

不完整的代码,而应该是足够了:

def start(self):
    self.running = True
    Clock = pygame.time.Clock()
    while self.running:
        self.p += 25
        tickFPS = Clock.tick(self.fps)
        pygame.display.set_caption("Press Esc to quit. FPS: %.2f" % (Clock.get_fps()))
        self.screen.fill([self.p&0xFF,(255-self.p)&0xFF,255])
        self.handleEvents()
        self.raiseEvent("updateFrame")
        pygame.display.flip()
def handleEvents(self):
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            self.running = False
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                self.running = False

:在完整的代码http://pastie.org/private/wm5vqq3f7xe0xlffy1fq

Answer 1:

尝试发出呼叫pygame.event.pump()的主循环里(或handleEvents功能)



Answer 2:

不知道这是否会帮助与否:

我意识到这个问题是移动窗口的窗口,不调整大小的窗口。 也许有移动和重新调整大小之间有一些相似之处吗?

我发现这对调整大小的文件中:

然后,显示模式被设定,几个事件被放置在pygame的事件队列。 当用户请求的程序关机pygame.QUIT发送。 该窗口将接收pygame.ACTIVEEVENT事件显示收益和失去输入焦点。 如果显示设定与pygame.RESIZABLE标志,pygame.VIDEORESIZE事件将当用户调整窗口尺寸来发送。 硬件显示的是直接画在屏幕上会得到pygame.VIDEOEXPOSE事件时,窗口的部分必须重新绘制。

和:

需要注意的是,当用户调整游戏窗口,pygame的不会自动更新其内部屏幕表面 。 你必须调用SET_MODE()每次VIDEORESIZE发送。 这确实应该是在文档中更加清晰。

也许移动游戏窗口时,类似的事情发生?



文章来源: Why does pygame freeze at pygame.event.get() when you move/drag the window?
标签: python pygame