(注意:编程初学者和堆栈溢出初学者,如果我做错了什么,我很抱歉)
我正在尝试写一个python (python 3.7.3,如果有用的话)程序,当反斜杠("\")键被按住时,它会发送垃圾邮件给左键(用于在线游戏)。我将鼠标按键绑定到"\",这样就不必检测鼠标左键并遇到程序检测鼠标点击的问题)。我的代码目前可以工作,但当"\“被释放时,根据它被按住的时间,它需要几秒钟才能停止点击。
下面是我的代码:
from pynput.keyboard import Key, Listener
import pyautogui
def key_down(key):
if str(key) == "'\\\\'":
pyautogui.click()
def key_up(key):
if str(key) == "'\\\\'":
print('key has been lifted')
with Listener(on_press=key_down,on_release=key_up) as l:
l.join()我做错了什么吗?有没有办法解决这个问题?
发布于 2019-05-21 00:06:14
对于将来遇到同样问题的任何人: idk如何通过积压来解决原始问题,但通过线程解决了这个问题。下面是我的代码:
注意:"'\\'“用于检查是否按下了反斜杠,但pynput模块将其存储为"'\'",因此由于反斜杠是转义字符,您需要键入"'\\'”才能使其实际为"'\'“
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()https://stackoverflow.com/questions/56213125
复制相似问题