【问题标题】:pygame mouse button down not workingpygame鼠标按钮按下不起作用
【发布时间】:2014-05-23 23:08:43
【问题描述】:

我正在制作这个多项选择程序,但我需要鼠标事件只有在按下回车后才能工作。

这是我的代码:

    for event in pygame.event.get(): # If user did something
        if event.type == pygame.QUIT: # If user clicked close
            done = True
        elif event.type == pygame.KEYDOWN: # If user pressed a key
            if event.key == pygame.K_RETURN: # If user pressed enter
                # Makes the start screen go away
                enter_pressed = True
                # Increments question_number
                question_number += 1

                # Where I Draw the question screen

然后在下面我有这个:

                for event in pygame.event.get(): # If user did something
                    if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
                        print("Derp") 

当我按下鼠标左键时,不会打印 Derp。 但是,当我像这样缩进时:

    for event in pygame.event.get(): # If user did something
        if event.type == pygame.QUIT: # If user clicked close
            done = True
        elif event.type == pygame.KEYDOWN: # If user pressed a key
            if event.key == pygame.K_RETURN: # If user pressed enter
                # Makes the start screen go away
                enter_pressed = True
                # Increments question_number
                question_number += 1

                # Where I Draw the question screen           

        elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
                        print("Derp") 

当我按下鼠标左键时 Derp 会打印

【问题讨论】:

    标签: python pygame mouse


    【解决方案1】:

    您可以使用布尔值指示是否按下了输入。

    for event in pygame.event.get(): # If user did something
        enter_pressed = False
        if event.type == pygame.QUIT: # If user clicked close
            done = True
        elif event.type == pygame.KEYDOWN: # If user pressed a key
            if event.key == pygame.K_RETURN: # If user pressed enter
                # Makes the start screen go away
                enter_pressed = True
                # Increments question_number
                question_number += 1
    
                # Where I Draw the question screen           
    
        elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 1 and enter_pressed:
                        print("Derp")
    

    我认为问题在于您正在迭代所有事件,并且在该循环中您正在迭代所有事件(再次),这会导致一些问题

    【讨论】:

    • 谢谢!这帮助了很多!
    【解决方案2】:

    从你所说的很难看出,但我有几个建议给你。首先,确保带有 derp 的 for 循环不在任何你不希望它出现的 if 语句中。其次,确保在每个游戏循环中调用一次 pygame.event.get(),否则代码只会给你发生的事件在两个电话之间,这不会是所有电话。如果这些都不起作用,请尝试发布整个代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-24
      • 2013-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多