Как сделать паузу в цикле с помощью мыши, используя 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 ответ

Решение

Проблема заключается в том, что, как только вы входите в цикл 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 действительно, а & - побитовая операция. Python также позволяет использовать отличный синтаксис при проверке диапазонов!

Другие вопросы по тегам