Python事件没有Key属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python事件没有Key属性相关的知识,希望对你有一定的参考价值。

我正在尝试为我的角色移动时创建一个程序。这是我的代码

while True:
   for event in pygame.event.get():
       if event.type == QUIT:
            pygame.quit()
            sys.exit()
        elif event.type == KEYDOWN:
            if(event.key == K_RIGHT):
            playerPos[0] +=1
    if (event.key == K_RIGHT) and playerPos[0] < MAPWIDTH -1:
        playerPos[0] =+ 1

这是错误

Traceback (most recent call last):
  File "H:python thingsfirstgame.py", line 90, in <module>
if (event.key == K_RIGHT) and playerPos[0] < MAPWIDTH -1:
AttributeError: 'Event' object has no attribute 'key'
答案

如果有人遇到这个帖子并遇到同样的问题,我修复了我的错误并最终得到了这个。添加评论以帮助其他人理解

while True:
    #get all the user events
    for event in pygame.event.get():

        #if user wants to quit
        if event.type == pygame.locals.QUIT:
            #and the game close the window
            pygame.quit()
            sys.exit()

        #if a key is pressed
        elif event.type == pygame.locals.KEYDOWN:
            #if right arrow is pressed
            if event.key == K_RIGHT and playerPos[0] < MAPWIDTH - 1:
                #change player's x postion
                playerPos[0] +=1
            if event.key == K_LEFT and playerPos[0] > 0:
                #change player x position
                playerPos[0] -=1
            if event.key == K_UP and playerPos[0] > 0:
                #change players x position
                playerPos[1] -=1
            if event.key == K_DOWN and playerPos[1] < MAPHEIGHT -1:
                #change player x position
                playerPos[1] += 1
另一答案

我认为问题是if (event.key == K_RIGHT) and playerPos[0] < MAPWIDTH -1:在forloop之外,所以事件没有关键属性。

for循环中的事件有一个关键属性,因为qazxsw poi在forloop内移动该行,这应该可以解决你的问题。

pygame.event.get():

我还建议你将第87和88行组合成一个像while True: for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() elif event.type == KEYDOWN: if(event.key == K_RIGHT): playerPos[0] +=1 elif (event.key == K_RIGHT) and playerPos[0] < MAPWIDTH -1: playerPos[0] =+ 1 这样的人

我希望这有帮助。

以上是关于Python事件没有Key属性的主要内容,如果未能解决你的问题,请参考以下文章

13 个非常有用的 Python 代码片段

在python 3.6中处理自定义编码时遇到类型错误

Python代码阅读(第40篇):通过两个列表生成字典

EF添加关联的提示问题:映射从第 260 行开始的片段时有问题:

Python Locust 自定义客户端函数没有属性事件

python的密码学抛出AttributeError:'int'对象没有属性'value'