python中pynput包如何中断死循环操作

今天应了一个网友的要求帮他做一个自动嗑药的按键脚本,却发现了好多问题。
我的想法:监听键盘,按压f5开始一个循环,按另外一个键跳出循环;但是一旦进入循环后pynput无法再次监听键盘,应该是在等待死循环结束。
查阅了官方文档后,官方给出了一个解决方法,为长时间操作添加一个线程,但是依然不行。。。
官方解释:
image.png

from pynput.keyboard import Key, Controller  
from pynput import keyboard  
import time  
import threading  
  
def on_press(key):  
    print(key)  
    t1 = threading.Thread(target=action())  
    if key == keyboard.Key.f5:  
        t1.start()  
        print('开始循环')  
    elif key == keyboard.Key.tab:  
        print('跳出循环')  
        threading.Thread._Thread__stop(t1)  
  
# 循环操作  
def action():  
    while True:  
        keyboard1 = Controller()  
        keyboard1.press('1')  
        keyboard1.release('1')  
        keyboard1.press('2')  
        keyboard1.release('2')  
        keyboard1.press('3')  
        keyboard1.release('3')  
        time.sleep(1)  
        keyboard1.press('4')  
        keyboard1.release('4')  
        keyboard1.press('5')  
        keyboard1.release('5')  
        time.sleep(1)  
while True:  
    with keyboard.Listener(  
        on_press=on_press) as listener:  
        listener.join()
阅读 2.5k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏