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属性的主要内容,如果未能解决你的问题,请参考以下文章