Python 为什么我的while循环不能与这些函数一起工作?

Python 为什么我的while循环不能与这些函数一起工作?,python,pynput,Python,Pynput,当我有这个while循环时,它会工作,但对于函数,它会停止工作。我已经测试了这些函数,以确保它们正常工作,它们确实正常,但即使autoclicker==1它也不会执行while循环 autoclicker = 0 def on_release(key): global autoclicker if key == keyboard.Key.f6: autoclicker += 1 print(autoclicker) def on_press(

当我有这个while循环时,它会工作,但对于函数,它会停止工作。我已经测试了这些函数,以确保它们正常工作,它们确实正常,但即使
autoclicker==1
它也不会执行while循环

autoclicker = 0

def on_release(key):
    global autoclicker

    if key == keyboard.Key.f6:
        autoclicker += 1
        print(autoclicker)

def on_press(key):
    global autoclicker

    if autoclicker == 1 and key == keyboard.Key.f6:
        autoclicker -= 1
        print(autoclicker)
        sys.exit()

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

while autoclicker == 1:
    mouse.press(Button.left)
    print(f"Left mouse button pressed.")

    mouse.release(Button.left)
    print(f"Left mouse button released.")


尝试将
while
循环放入侦听器中,如下所示:

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

    while autoclicker == 1:
        mouse.press(Button.left)
        print(f"Left mouse button pressed.")

        mouse.release(Button.left)
        print(f"Left mouse button released.")

    listener.join()

您的代码中存在一些问题

  • 如果你不想线程阻塞你的代码。(你说过你的代码最终不会运行。)。更改:
  • 我不知道为什么要使用
    而autoclicker==1
    ,因为您在开始时定义了
    autoclicker=0
    ,while循环没有意义。您可能需要对代码进行一些更改

  • 我在autoclicker==1时执行了
    ,因为如果按F6,函数应该添加一个。我希望F6是开始键和结束键。@Nipar
    如果为True,如果autoclicker==1:break,则您发布的代码逻辑无效。
    
    with keyboard.Listener(
            on_release=on_release,
            on_press=on_press) as listener:
        listener.join()
    
    listener = keyboard.Listener(on_release=on_release, on_press=on_press)
    listener.start()