微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AttributeError: 'Event' 对象没有属性 'button'

如何解决AttributeError: 'Event' 对象没有属性 'button'

这是我的代码,我只是尝试运行我的 xBox 控制器,以便稍后使用 if 语句来控制直流电机:

pygame.init()
joystick = []
clock = pygame.time.Clock()

for i in range(0,pygame.joystick.get_count()):
    joystick.append(pygame.joystick.Joystick(i))
    joystick[-1].init()
        
while True:
    clock.tick(60)
    for event in pygame.event.get():
        if event.button == 0:
            print ("A Has Been pressed")
        elif event.button == 1:
            print ("B Has Been pressed")
        elif event.button == 2:
            print ("X Has Been pressed")
        elif event.button == 3:
            print ("Y Has Been pressed")

我在运行代码时收到以下错误消息:

pygame 1.9.4.post1
Hello from the pygame community. https://www.pygame.org/contribute.html
A Has Been pressed
Traceback (most recent call last):
  File "/home/pi/Documents/Code/Practice.py",line 13,in <module>
    if event.button == 0:
AttributeError: 'Event' object has no attribute 'button' 

解决方法

每种事件类型都会生成一个具有不同属性的 pygame.event.Event 对象。并非为所有事件对象都定义了 button 属性。您可以从鼠标或操纵杆事件(如 buttonMOUSEMOTION)中获取 MOUSEBUTTONDOWN 属性。但是,所有事件对象都具有 type 属性。检查 type 属性之前的事件 button 属性(请参阅 pygame.event):

while True:
    clock.tick(60)
    for event in pygame.event.get():
        if event.type == pygame.MOUSEBUTTONDOWN:
            if event.button == 0:
                print ("A Has Been Pressed")
            elif event.button == 1:
                print ("B Has Been Pressed")
            elif event.button == 2:
                print ("X Has Been Pressed")
            elif event.button == 3:
                print ("Y Has Been Pressed")

MOUSEBUTTONDOWN 事件在您单击鼠标按钮时发生一次,而 MOUSEBUTTONUP 事件在鼠标按钮被释放时发生一次。 pygame.event.Event() 对象有两个提供鼠标事件信息的属性。 pos 是一个存储被点击位置的元组。 button 存储被点击的按钮。每个鼠标按钮都关联一个值。例如,鼠标左键、鼠标中键、鼠标右键、鼠标滚轮向上和鼠标滚轮向下的属性值为1、2、3、4、5。当按下多个键时,会发生多个鼠标按钮事件。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。