для тех, кто столкнется с такой же проблемой в будущем: не знаю, как решить исходную проблему с отставанием, но обошлось с помощью многопоточности.вот мой код сейчас:
примечание: «\\\\» проверяет, нажата ли клавиша обратной косой черты, но модуль pynput хранит ее как «\\», поэтомупоскольку обратная косая черта является escape-символом, вам нужно набрать его "'\\\\'", чтобы он действительно был "'\\'"
from pynput.keyboard import Key, Listener
import pyautogui
from threading import Thread
shouldClick = False
def click():
while True:
while shouldClick:
pyautogui.click()
def key_down(key):
global shouldClick
if str(key) == "'\\\\'":
shouldClick = True
def key_up(key):
global shouldClick
if str(key) == "'\\\\'":
shouldClick = False
print('key has been lifted')
def listen():
with Listener(on_press=key_down,on_release=key_up) as l:
l.join()
listenThread = Thread(target=listen)
clickThread = Thread(target=click)
listenThread.start()
clickThread.start()
, если вы хотите раздвинуть пределынажав до крайности, вы можете добавить следующий код:
thrCount = 40
print(thrCount, 'threads')
for _ in range(thrCount):
clickThreadList.append(Thread(target=click))
for thr in clickThreadList:
thr.start()