未捕获PyGame KEYDOWN事件

2024-10-06 06:47:54 发布

您现在位置:Python中文网/ 问答频道 /正文

当我执行以下代码时,不会捕获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编程的新手。在


Tags: 代码ineventimgforgettypescreen
1条回答
网友
1楼 · 发布于 2024-10-06 06:47:54

问题最有可能是你阻止程序运行太快的方式(也就是时钟)。您当前正在使用

pygame.time.delay(1000 * wtime)

这不是你想要的。在

正确的方法是使用

^{pr2}$

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

clock.tick(FPS)

循环的帧数是每秒的帧数。这将使程序每秒运行60次循环。在你的代码里

pygame.time.delay(1000 * wtime)

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

相关问题 更多 >