python - AttributeError:“事件”对象没有属性“键”
问题描述
运行代码时,我收到以下错误消息。
Traceback (most recent call last):
File "C:/Users/user/PycharmProjects/MyDevWork/PygamesRelated/game_1.py", line 29, in <module>
elif event.key == pygame.K_s:
AttributeError: 'Event' object has no attribute 'key'
这是我的代码:
import pygame
pygame.init()
screen = pygame.display.set_mode((720, 480))
clock = pygame.time.Clock()
FPS = 60
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
rect = pygame.Rect((0, 0), (32, 32))
image = pygame.Surface((32, 32))
image.fill(WHITE)
while True:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == pygame.QUIT:
quit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_w:
rect.move_ip(0, -2)
elif event.key == pygame.K_s:
rect.move_ip(0, 2)
elif event.key == pygame.K_a:
rect.move_ip(-2, 0)
elif event.key == pygame.K_d:
rect.move_ip(2, 0)
screen.fill(BLACK)
screen.blit(image, rect)
pygame.display.update()
我正在使用 python 3.7 和 Pycharm。
解决方案
如前所述,您的缩进是这里的问题。检查的所有内容都event.key
应该在检查的“内部” KEYDOWN
。将您的 while 循环更改为:
while True:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == pygame.QUIT:
quit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_w:
rect.move_ip(0, -2)
elif event.key == pygame.K_s:
rect.move_ip(0, 2)
elif event.key == pygame.K_a:
rect.move_ip(-2, 0)
elif event.key == pygame.K_d:
rect.move_ip(2, 0)
推荐阅读
- python - Python subplot 3 绘制 2x2 矩阵(金字塔)
- json - 邮递员:TypeError:无法读取未定义的属性“响应”
- python - 将函数应用于字典中 2 个键的每个可能组合
- sql - odi 列沿袭查询
- r - 多面 ggplot 华夫饼图中的手动色标
- flutter - 每次获取数据时,我的 FutureBuilder 都会触发两次
- c# - ASP.NET MVC 视图 - 从动态扩展对象获取数据,显示 Id 不是来自另一个表 EF 类的名称
- c# - 如何使用 Razor/MVC 5 将元素动态添加到下拉列表
- vue.js - 使用 vuejs-datepicker 运行 Jest 测试时出错
- python - 当excel文件仅在Documents文件夹中时,Excel Vba代码可以正常运行,但是当它在另一个位置时,它会在可执行文件中出错