Ich kann nicht trainieren, um die Schaltfläche Funktion einmal ausgeführt, wenn Sie darauf klicken. Wenn die Maustaste gedrückt ist, wird die Funktionsschleife durchlaufen, bis sie freigegeben wird. Ich möchte nur einmal pro Klick durch die Schleife laufen. Hier ist der Code:Making Button-Funktion einmal ausgeführt
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“) druckt etwa 3 Mal, wenn Sie so schnell klicken, wie Sie können, wie es durch die Schleife wiederholt ausgeführt wird.
Mögliche Duplikate von [Wie bekomme ich pygame Knopf um nur einen Klick zu registrieren?] (Http://stackoverflow.com/questions/31300690/how-to-get-pygame-button-to-register -only-one-click) – numbermaniac