如何在PyGame中进行“鼠标按下”循环

时间:2019-02-13 09:24:32

标签: python python-3.x pygame

因此,我目前在绘图应用程序中具有用于喷枪的代码。启用该功能后,它应该在画布上绘画,基本上就像喷枪一样。但是现在,我不知道如何使pygame检测到鼠标向下或鼠标向上并使其循环一段时间。这是代码:

def airbrush():
    airbrush = True
    cur = pygame.mouse.get_pos()
    click = pygame.mouse.get_pressed()
    while click == True:
        pygame.draw.circle(gameDisplay, colorChosen, (cur[0] + random.randrange(brushSize), cur[1] + random.randrange(brushSize)), random.randrange(1, 5))
        pygame.display.update()
        clock.tick(60)

现在,我无法使用“单击时”。我应该用什么代替“点击”才能使它起作用,以便在按住鼠标时可以绘画,但是在鼠标“向上”时会停止?

1 个答案:

答案 0 :(得分:0)

调用pygame.mouse.get_pressed()时,将评估pygame.event.get()返回的状态。 pygame.mouse.get_pressed()的返回值是具有按钮状态的元组。

不要在函数中实现单独的事件处理。在主循环中进行事件处理:

done = False
while not done:
    clock.tick(60)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True

    airbrush()
    pygame.display.flip()

在功能airbrush中,评估当前帧的按钮(例如,左按钮)的当前状态:

def airbrush():
    airbrush = True
    cur = pygame.mouse.get_pos()
    click = pygame.mouse.get_pressed()
    if click[0] == True: # evaluate left button
        pygame.draw.circle(gameDisplay, colorChosen, (cur[0] + random.randrange(brushSize), cur[1] + random.randrange(brushSize)), random.randrange(1, 5))