0

我是 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
4

1 回答 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 调用中的事件。

请注意,我重写了边界检查,因为逻辑 and 在 Python 中实际上是and,而&是按位运算。Python 在检查范围时也允许使用很酷的语法!

于 2014-03-16T15:14:17.137 回答