如何在pygame中通过鼠标点击暂停循环?
我刚开始学Python,现在在做一个使用pygame的项目。我在鼠标点击时启动了一个循环,运行得很好。但是我不知道怎么停止这个循环。我希望它能在鼠标点击时停止,并且在那次点击之前一直运行。我在下面提供了代码的大致框架。有没有人能帮我写出合适的代码?提前谢谢大家。
for event in pygame.event.get():
if (event.type == pygame.MOUSEBUTTONDOWN):
(mx,my)= pygame.mouse.get_pos()
if((mx>=375)&(mx<=425)&(my>=500)&(my<=550)): #to begin loop on mouse click#
while True:
---statements-----
if((mx>=300)&(mx<=350)&(my>=500)&(my<=550)): #to end loop on mouse click#
exit
else:
continue
1 个回答
1
问题在于,一旦你进入了 while True 循环,你就不会再等待来自pygame的鼠标事件了。你可以尝试在循环之前检查一下新的事件:
for event in pygame.event.get(pygame.MOUSEBUTTONDOWN):
mx, my = pygame.mouse.get_pos()
if 375 <= mx <= 425 and 500 <= my <= 550:
run = True
while run:
# statements
# ...
for event in pygame.event.get(pygame.MOUSEBUTTONDOWN):
mx, my = pygame.mouse.get_pos()
if 300 <= mx <= 350 and 500 <= my <= 550:
run = False
你可以直接在 event.get 调用中过滤事件。
注意,我重新写了边界检查的部分,因为在Python中逻辑运算是用 and,而 & 是位运算。Python在检查范围时也有很酷的语法!