Python 3.x pygame:pygame.KEYDOWN不工作

Python 3.x pygame:pygame.KEYDOWN不工作,python-3.x,pygame,Python 3.x,Pygame,我对python和pygame都是新手,只是尝试测试keydown事件,但它不起作用……请帮助 因为Pygame只在PythonV3.2和下面的上运行,所以我现在无法测试它。 但是如果我没有完全停药,我想这是因为你没有更新显示器 考虑这一变化: import pygame pygame.init() events = pygame.event.get() while True: for event in events: if event.type == pygam

我对python和pygame都是新手,只是尝试测试keydown事件,但它不起作用……请帮助

因为Pygame只在PythonV3.2和下面的上运行,所以我现在无法测试它。
但是如果我没有完全停药,我想这是因为你没有更新显示器

考虑这一变化:

import pygame
pygame.init()
events = pygame.event.get()
    while True:
    for event in events:
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_1:
                print('this should work!!')
这将更新显示器并触发显示器中发生的事件。
如果你不这样做,你会得到一个陈旧的窗口,它不会触发、渲染或产生任何东西,除了初始渲染

同样,在许多GL库中,您需要清空事件缓冲区,否则会出现相同的效果。这意味着您将得到一个陈旧的窗口,它只是“挂起”,因为事件试图“进入”缓冲区,但您没有定期清空它。(有些图形库甚至要求您轮询事件池,即使它是空的,只是为了“释放”事件队列)

因此,在使用图形时请记住:

  • 始终调用事件缓冲区(即使它是空的)
  • 始终翻转/更新场景,否则应用程序会过时

在使用键盘事件之前,您需要设置一些显示属性。没有窗口,没有关键事件。因此,在
while
循环之前添加类似的内容,它应该可以工作:

import pygame
pygame.init()
events = pygame.event.get()
while True:
    for event in events:
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_1:
                print('this should work!!')
    pygame.display.flip()
通常,在循环之前,您还可以使用
clock=pygame.time.clock()
、在
clock.tick中使用的每秒帧数(每秒帧数)
、一些对象/玩家/矩形等设置时钟,但我将留给您

以下是您的代码,其中包含启用关键事件的最小显示设置:

WIDTH=600
HEIGHT=480
SCREEN = pygame.display.set_mode((WIDTH, HEIGHT))
import pygame

pygame.init()
WIDTH=600
HEIGHT=480
SCREEN = pygame.display.set_mode((WIDTH, HEIGHT))

while True:
    events = pygame.event.get()
    for event in events:
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_1:
                print('this DOES work! :)')