为什么我的盒子只存在一帧?

Why are my boxes only existing for one frame?

我正在努力做到一旦按下 f 键,就会永久创建一个框。但是,一旦按下 f 键,该框仅存在一帧。如何创建一个由按键触发的永久框?谢谢

以下是我创建的存在上述问题的代码的摘录:

for event in pygame.event.get():
    if event.type == pygame.KEYDOWN:
    
        if event.key == pygame.K_f:
            pygame.draw.rect(screen, (255,255,0), (200, 200, 15, 15))

该事件仅在按下按钮时发生一次。因此,该框仅在 1 帧内可见。如果想让盒子永久化,需要在应用循环中绘制。

添加一个状态变量draw_box并设置按下按钮时的状态。根据 draw_box:

的状态绘制方框
draw_box = False

# application loop
run = True 
while run:
    # [...]

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False   

        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_f:
                draw_box = True       
        

    # [...]

    if draw_box: 
        pygame.draw.rect(screen, (255, 255, 0), (200, 200, 15, 15))

    # [...]

    pygame.display.update()