如何使用pygame鼠标单击暂停循环?

时间:2014-03-16 15:03:00

标签: python python-2.7 pygame onmouseclick

我是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 个答案:

答案 0 :(得分: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 call中的事件。

请注意,我重写了边界检查,因为逻辑和Python实际上是,而&amp; 是按位操作。 Python也可以在检查范围时提供很酷的语法!