使按钮功能 运行 一次
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
替换为您注释掉的行。希望这有效:)
我无法在单击时使按钮功能 运行 一次。每当按下鼠标按钮时,它都会通过函数循环 运行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
替换为您注释掉的行。希望这有效:)