按钮功能一直运行,直到鼠标未被点击

时间:2016-06-28 12:42:36

标签: python-3.x button pygame

我已经制作了几个按钮,但是当我单击按钮来运行该功能时,按钮会反复运行,直到我释放出来。有没有办法让每次点击运行一次,而不是直到它被释放。这里是按钮功能:

def Button(msg, x, y, w, h, ic, ac, action=None):
    mouse = pygame.mouse.get_pos()
    click = pygame.mouse.get_pressed()
    if x+w > mouse[0] > x and y+h > mouse[1] > y:
        pygame.draw.rect(window, ac, (x, y, w, h))
        if click[0] == 1 and action != None:
            pygame.draw.rect(window, lightgrey, (x, y, w, h))
            if action == "undo":
                print("hey")

打印嘿是测试点击撤消的时间。但是,根据按钮按下的程度,它打印至少5次,因为我无法足够快地释放按键。

1 个答案:

答案 0 :(得分:0)

也许您可以像这样重新创建函数:

def button(x, y, w, h, inactive, active, action=None):
    mouse = pygame.mouse.get_pos()
    click = pygame.mouse.get_pressed()

    if x + w > mouse[0] > x and y + h > mouse[1] > y:
        gameDisplay.blit(active, (x, y))
        if click[0] == 1 and action is not None:
            action()
    else:
        gameDisplay.blit(inactive, (x, y))

完成此操作后,您可以这样称呼它:

#For Example
button(100, 350, 195, 80, startBtn, startBtn_hover, game_loop)

这是每个参数的含义:

  • x:按钮的x坐标
  • y:按钮的y坐标
  • w:按钮的宽度
  • h:按钮的高度
  • 活动:鼠标悬停在按钮上时按钮的图片
  • 无效:按钮处于空闲状态时的图片
  • action:单击按钮时执行的功能