Python事件处理程序方法在条件中不返回值

Python事件处理程序方法在条件中不返回值,python,conditional,pygame,Python,Conditional,Pygame,我对python完全陌生(我已经有一段时间没有编写太多代码了)。 我试图调用一个方法,该方法在一个“hello world”类型的小游戏中充当事件处理程序,但它根本不起作用。我在OSX 10.6.3上使用pygames 1.9.1库和python 2.6.1 这是一个while循环: self.exitCheck() if self.controlUpdate == True: self.playerX += 1 这两种方法是: de

我对python完全陌生(我已经有一段时间没有编写太多代码了)。 我试图调用一个方法,该方法在一个“hello world”类型的小游戏中充当事件处理程序,但它根本不起作用。我在OSX 10.6.3上使用pygames 1.9.1库和python 2.6.1

这是一个while循环:

       self.exitCheck()    

       if self.controlUpdate == True:
           self.playerX += 1
这两种方法是:

def exitCheck(self):
    for event in pygame.event.get():
        if event.type == KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                print "Escape pressed"
                pygame.quit()
                exit()


def controlUpdate(self):
    for event in pygame.event.get():
        if event.type == KEYDOWN:
            if event.key == pygame.K_SPACE:
                print "Spacebar pressed"
                return True
        elif event.type == KEYUP:
            if event.key == pygame.K_SPACE:
                print "Spacebar not pressed"
                return False
        else:
            return False

exitCheck始终是,但controlUpdate似乎从未在条件中被调用。我觉得我要么错过了我一直在读的python书(oreilly Learning python)中的一些内容,要么我只是从正确的编码中休息了太长时间,但是是的。非常感谢您的帮助。

编辑:问题是
pygame.event.get()
都会返回并从事件队列中删除所有事件。这意味着每次调用
controlUpdate()
,事件队列都将为空,并且
for
循环中的任何内容都不会执行。

编辑:问题是
pygame.event.get()
都会返回事件队列中的所有事件,并从中删除所有事件。这意味着每次调用
controlUpdate()
,事件队列将为空,并且
for
循环中的任何内容都不会执行。

是否缺少一些括号


如果self.controlUpdate()==True:

这里是否缺少一些括号


如果self.controlUpdate()==True:

是。pygame.event.get不会触发,但如果我在触发的for循环之前粘贴一条print语句(现在想想)。哦,没有括号它也不会触发,所以这是我的错误之一。。。for循环似乎根本没有触发。您确定没有触发
pygame.event.get()
?有可能它被触发了,但没有任何事件。啊,我刚想出来。因为我打了两次。exitCheck似乎清空了事件队列,因此当controlUpdate轮到它时,没有什么可检查的。谢谢你的帮助。我只是想把这两个方法合并成一个,我没有意识到它是这样工作的。是的,我只是查看了
pygame.event.get()
的文档,发现它清空了事件队列,所以
controlUpdate()
的队列总是空的。是的。pygame.event.get不会触发,但如果我在触发的for循环之前粘贴一条print语句(现在想想)。哦,没有括号它也不会触发,所以这是我的错误之一。。。for循环似乎根本没有触发。您确定没有触发
pygame.event.get()
?有可能它被触发了,但没有任何事件。啊,我刚想出来。因为我打了两次。exitCheck似乎清空了事件队列,因此当controlUpdate轮到它时,没有什么可检查的。谢谢你的帮助。我只是想把这两个方法合并成一个,我没有意识到它是这样工作的。是的,我只是查看了
pygame.event.get()
的文档,发现它清空了事件队列,所以
controlUpdate()
的队列总是空的。