首页 > 解决方案 > 是否可以在不再次运行 if 语句的情况下按下键

问题描述

我正在尝试用媒体 next-prev 键替换卷媒体键。问题是按下或调高音量键。

from pynput.keyboard import Key, Listener, Controller

keyboard = Controller()

def on_press(key):
    if key == Key.media_volume_up:
        keyboard.press(Key.media_down)
        keyboard.press(Key.media_next)
    if key == Key.media_volume_down:
        keyboard.press(Key.media_volume_up)
        keyboard.press(Key.media_previous)

def on_release(key):
    pass

with Listener(on_press=on_press, on_release=on_release) as listener:
    listener.join()

我试图让它像这样,但它也触发了前面的 if 语句,所以它是循环的。

from pynput.keyboard import Key, Listener, Controller

keyboard = Controller()

block = False

def on_press(key):
    global block

    if not block:
        if key == Key.media_volume_up:
            block = True
            keyboard.press(Key.media_volume_down)
            keyboard.press(Key.media_next)
            block = False
        if key == Key.media_volume_down:
            block = True
            keyboard.press(Key.media_volume_up)
            keyboard.press(Key.media_previous)
            block = False

def on_release(key):
    pass

with Listener(on_press=on_press, on_release=on_release) as listener:
    listener.join()

标签: pythonpynput

解决方案


推荐阅读