Python 如何检测pygame中控制器中的哪个特定按钮被释放

Python 如何检测pygame中控制器中的哪个特定按钮被释放,python,python-3.x,pygame,Python,Python 3.x,Pygame,我试图检测哪个按钮正在从我的控制器被按下,以及何时被释放。 这就是我所能做到的 导入pygame pygame.init() j=pygame.操纵杆.操纵杆(0) j、 init() 尝试: 尽管如此: events=pygame.event.get() 对于事件中的事件: 如果event.type==pygame.JOYBUTTONDOWN: 如果j.get_按钮(1): 打印(“x”) elif j.get_按钮(2): 打印(“a”) elif event.type==pygame.JO

我试图检测哪个按钮正在从我的控制器被按下,以及何时被释放。 这就是我所能做到的

导入pygame
pygame.init()
j=pygame.操纵杆.操纵杆(0)
j、 init()
尝试:
尽管如此:
events=pygame.event.get()
对于事件中的事件:
如果event.type==pygame.JOYBUTTONDOWN:
如果j.get_按钮(1):
打印(“x”)
elif j.get_按钮(2):
打印(“a”)
elif event.type==pygame.JOYBUTTONUP:
打印(“按钮释放”)
除键盘中断外:
打印(“立即退出”)
j、 退出
我是编程新手,我不完全理解这段代码。 它检测是否按下x或a以及是否释放任何按钮。我想让它检测x或a是否被按下以及何时被释放。 谢谢你的阅读

pygame.event.get()返回事件列表(事件是当用户移动鼠标/按下按钮e.t.c.时生成的pygame结构/对象的一种类型)。然后,对于这些事件中的每一个,检查它们是否是您想要的事件(pygame.JOYBUTTONDOWN或event.type,pygame.JOYBUTTONUP)。 您只能检查按钮是否按下,然后查看按下了哪个按钮

如果event.type==pygame.JOYBUTTONDOWN:
如果j.get_按钮(1):
打印(“x”)
elif j.get_按钮(2):
打印(“a”)
要想知道按钮何时被释放,我能想到的最好的办法就是列出按钮的状态。当按钮的状态改变时,你可以做一些事情

ButtonStatus[2];
ButtonStatus[0]=get_button(1);#a
ButtonStatus[1]=get_button(2);#x
if event.type == pygame.JOYBUTTONUP:
           if ButtonStatus[0]!=get_button(1)
                #status changed do yr code for button release a
                pass;
           if ButtonStatus[1]!=get_button(2)
                #status changed do yr code for button release b
                pass;

上面的代码是一个未实际编译的示例。一般的想法是检查按钮何时被释放,检查哪个按钮改变了状态并相应地执行代码。

所以,我在其他答案的帮助下编写了我需要的代码

import pygame

pygame.init()

j = pygame.joystick.Joystick(0)
j.init()

r = 2
t = 5
b = 1
x = 3
try:
    while True:
        events = pygame.event.get()
        for event in events:
            if event.type == pygame.JOYBUTTONDOWN:
                if j.get_button(1):
                    print("B")
                    b = 2
                elif j.get_button(2):
                    print("X")
                    x = 5
            elif event.type == pygame.JOYBUTTONUP:
                if b == r :
                    print("b2")
                    b = 1
                if x == t:
                    print("x2")
                    x = 3



except KeyboardInterrupt:
    print("EXITING NOW")
    j.quit()
这在任何方面都不可靠。您需要为所需的每个按钮创建新字符串。
您可以通过复制包含最大变量的按钮,并在您复制的代码中的每个变量中添加3来实现这一点。如果你能给出一个更好的答案(可能存在),请回答原始帖子。此外,当你同时按下多个按钮并至少释放一个按钮时,它会认为你已经释放了所有按钮。

@Mikekmp你无法“阅读”关于
按钮状态的信息。您必须定义一个列表
ButtonStatus
,该列表存储按钮的状态。@rabbi76 Ohhhhhhhhh ok。我对编程非常陌生,所以我不容易理解这些东西。