python pygame如何解扣按钮?

2024-10-02 08:26:05 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我正在建造一个基于圆周率的机器人。 它使用ps3控制器作为输入。当按下X按钮时,它会拍照。因为某种原因,一次大概要拍5次。有没有一种方法可以使输入信号反弹,使其只识别一个按键?在

我假设它每次都注册多个印刷机。。。代码的一部分是附加的,但我必须声明大部分是从皮博格网站在

joystick = pygame.joystick.Joystick(0)

button_take_picture = 14            # X button

while running:
    # Get the latest events from the system
    hadEvent = False
    events = pygame.event.get()
    # Handle each event individually
    for event in events:
        if event.type == pygame.QUIT:
            # User exit
            running = False
        elif event.type == pygame.JOYBUTTONDOWN:
            # A button on the joystick just got pushed down
            hadEvent = True
        elif event.type == pygame.JOYAXISMOTION:
            # A joystick has been moved
            hadEvent = True
        if hadEvent:
            if joystick.get_button(button_take_picture):
                take_picture()

Tags: theeventfalsegetiftypebuttonevents
1条回答
网友
1楼 · 发布于 2024-10-02 08:26:05

似乎发生了这样的情况:X按钮在多个帧中保持向下。在此期间可能会发生其他一些事件,导致在代码中对每帧调用take_picture()。要解决这个问题,您可以只在JOYBUTTONUP上调用take_picture()(当按钮被释放时),或者将if joystick.get_button(button_take_picture)部分移到pygame.JOYBUTTONDOWN部分的内部。在

或者,您可以使用另一个变量来指示图片是否已被拍摄,如下所示:

picture_was_taken = False

while running:
     hadEvent = False
     events = pygame.event.get()
     for event in events:
       ...
       if event.type == pygame.JOYBUTTONUP:
           if not joystick.get_button(button_take_picture)
               picture_was_taken = False
       ...
       if hadEvent:
           if joystick.get_button(button_take_picture) and not picture_was_taken:
               take_picture()
               picture_was_taken = True

相关问题 更多 >

    热门问题