python - 如何在 pygame 中创建 "while mouse down"循环

标签 python python-3.x pygame

所以我目前在绘图应用程序中拥有喷枪的代码。当该功能处于事件状态时,它应该在 Canvas 上绘制,基本上就像喷枪一样。但现在,我不知道如何让 pygame 检测鼠标按下或鼠标松开并从中进行 while 循环。这是代码:

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)

现在,我的“点击时”不起作用。我应该用什么替换“单击”才能完成这项工作,以便在按住鼠标时,它会绘画,但当鼠标“向上”时,它会停止?

最佳答案

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))

关于python - 如何在 pygame 中创建 "while mouse down"循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54666587/

相关文章:

python - lambda 可以使用 *args 作为参数吗?

python - Flask:验证 JSON 和 JSON Schema 的装饰器

Python从索引处开始循环遍历列表

python - 加密货币两个时间戳之间每分钟的历史价格

python - Pygame - 无法将整个文本放在不同的行中

python - 在 Pygame 中比较图像(不是逐像素比较)

python - 将网络拆分为多个前缀的子网

python - 如何使用Python增加乒乓球的摩擦力?

python-3.x - scikits.statsmodels 不能用 pip python 3.5 安装

python - Pygame 碰撞检测有缺陷