看看代码:
import pygame
import sys
def check(screen, event):
pos = 0
pos = positionNow(event)
def positionNow(event):
if event.type == pygame.MOUSEBUTTONDOWN:
val = pygame.mouse.get_pos()
print(val)
def main():
pygame.init()
screen = pygame.display.set_mode((600, 600))
running = True
while running:
events = pygame.event.get()
for event in events:
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
check(screen, event)
pygame.display.update()
main()
示例输出:
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
(333, 268)
我使用pygame.MOUSEBUTTONDOWN
方法来获取单击任何鼠标按钮时鼠标的坐标。问题是,当我在主函数内部的WHILE循环之外将pygame.MOUSEBUTTONDOWN
作为一个单独的函数时,它会多次打印出val
(单击按钮时鼠标的坐标(。我只想按pygame.MOUSEBUTTONDOWN
的要求打印一次。
现在,我可以在main()
的while循环下拥有所有内容,并使其工作如下所示。但我的目标是将此作为一个单独的功能来完成。
import pygame
import sys
def main():
pygame.init()
screen = pygame.display.set_mode((600, 600))
running = True
while running:
events = pygame.event.get()
for event in events:
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.MOUSEBUTTONDOWN:
val = pygame.mouse.get_pos()
print(val)
pygame.display.update()
main()
示例输出:
(389, 86)
为什么会发生这种情况,我该如何克服它?
这是缩进的问题。您必须在事件循环中调用check
,而不是在事件循环之后调用:
def main():
pygame.init()
screen = pygame.display.set_mode((600, 600))
running = True
while running:
events = pygame.event.get()
for event in events:
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# INDENTATION
#-->|
check(screen, event)
pygame.display.update()
main()