使按钮功能 运行 一次

Making button function run once

我无法在单击时使按钮功能 运行 一次。每当按下鼠标按钮时,它都会通过函数循环 运行s 直到释放。我只想 运行 每次点击循环一次。这是代码:

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 event.type == pygame.MOUSEBUTTONDOWN:
        if click[0] == 1 and action != None:
            pygame.draw.rect(window, lightgrey, (x, y, w, h))
            if action == "undo":
                print("hey")  
            if action == "reset":
                for row in range(6):
                    for column in range(7):
                        board[row][column] = 0          
            elif action == "quit":
                pygame.quit()
                quit()


    else:
        pygame.draw.rect(window, ic, (x, y, w, h))

print("hey") 如果您尽可能快地单击并重复循环,运行打印大约 3 次。

只要按住鼠标,

pygame.mouse.get_pressed() 就会 return 为真。假设这会检查每一帧,它将 return 1 或 True 对于多个帧,从而导致您的打印语句出现多次。

if event.type == pygame.MOUSEBUTTONDOWN:

您注释掉的这一行是您应该使用的行。它仅在实际单击鼠标时激活,而不是 按住它时。请注意,要使其正常工作,您必须在该行之前有一个类似 for event in pygame.event.get() 的循环。

所以您基本上需要做的是删除 click = pygame.mouse.get_pressed() 并将 if click[0] == 1 替换为您注释掉的行。希望这有效:)