PyGame KEYDOWN事件未捕获



当我执行以下代码时,KEYDOWN事件不会被捕获。所需的结果是在任何按键时退出循环。如何使代码达到预期效果?

while slideshow:
clock.tick(30)
for event in pygame.event.get():
if event.type == pygame.QUIT: sys.exit()
elif event.type == pygame.KEYDOWN: slideshow = False
scope.screen.blit(safimg, (0, 0))
for t in statsurfs:
scope.screen.blit(t, (fontline * lnum, fontcol))
lnum += 1
lnum = 5
for t in dynsurfs:
scope.screen.blit(t, (fontline * lnum, fontcol * 2 - t.get_width()))
lnum += 1
pygame.display.flip()
pygame.time.delay(wtime * 1000)
for i in imgfiles:
img = pygame.image.load(i).convert()
#img = pygame.transform.scale(img, scope.size)
scope.screen.blit(img,(0, 0))
pygame.display.flip()
pygame.time.delay(wtime * 1000)

此外,对于如何优化代码的任何提示,我都将不胜感激,因为我是Python编程的新手。

这个问题很可能与防止程序运行过快的方式有关(也就是时钟)。您当前正在使用

pygame.time.delay(1000 * wtime)

这不会像你想要的那样奏效。

正确的方法是使用

clock = pygame.time.Clock()

(在代码开头设置时钟),然后调用

clock.tick(FPS)

在循环结束时(其中FPS是所需的每秒帧数)。这将使程序每秒在循环中运行60次。在您的代码中,

pygame.time.delay(1000 * wtime)

只是让程序等待,但程序实际上并没有运行任何东西;它只是在等待。如果你还有其他问题,请回答这个答案。好运:D

最新更新