python - 如何使用 pygame 通过单击鼠标来暂停循环?

标签 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

最佳答案

问题是,一旦进入 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 实际上是 and,而 & 是按位运算。 Python 在检查范围时也允许使用很酷的语法!

关于python - 如何使用 pygame 通过单击鼠标来暂停循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22438518/

相关文章:

c++ - 子进程卡住 popen().stdout.read

python - QValidator的正确使用

python - 如何向日期时间对象添加毫秒

python - Pivot 将行复制到新列 Pandas

python-3.x - 如何使用表面的 alpha 值在 pygame 中正确使图像淡入淡出

python - 如何在 Python 中将类方法应用于我自己的类的属性

python - 如何在 font.render 行中包含此变量?

python - 当程序终止或 pc 关闭时调用函数

python - 使用特定版本的 Python 创建 Windows Python virtualenv

python 2.7 存在于字典中