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