python – 当你移动/拖动窗口时,为什么pygame会在pygame.event.get()处冻结?

基本上我有一个循环(tick,set_caption,screen_fill,event.get(),send_frame_event,flip,repeat)

当我在Windows 7上拖动窗口时,循环停止循环,我最终卡在pygame.event.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

最佳答案 尝试在mainloop(或handleEvents函数)中调用pygame.event.pump()

点赞