import pynput
import time
def poschange(x,y):
#print(f"{x},{y}")
print("poschange called")
pynput.mouse.Controller().position = (0,0)
def stop(key):
#print(key)
try:
if key.char == 'a':
print("stopped")
keyli.stop()
mouli.stop()
exit()
except:
pass
keyli = pynput.keyboard.Listener(on_press = stop)
keyli.start()
mouli = pynput.mouse.Listener(on_move = poschange)
mouli.start()
keyli.join()
mouli.join()
我只想将鼠标的位置锁定在(0,0)上,直到我按键盘上的'a'键,然后程序终止,我又重新控制了鼠标。据我对这段代码的了解,每当我移动鼠标时,都会调用poschange()
方法,并且必须将鼠标位置设置回(0,0)并再次重复直到鼠标侦听器线程终止,但它只能工作两次, poschange()
函数中的print语句在控制台中打印两次,然后鼠标变慢并缓慢移动,当我按“ a”键时,侦听器必须停止并且程序必须终止,但是我不必手动执行此操作并且只有鼠标再次变得又快又正常。但是,当我从代码中删除行pynput.mouse.Controller().position = (0,0)
时,事情将按预期工作,每当我移动鼠标时,它都会打印打印语句“ poschange named”,并且按“ a”键时程序将按预期终止。 >
有人可以告诉我原因,然后告诉我这怎么了。预先感谢。
import pynput导入时间def poschange(x,y):#print(f“ {x},{y}”)print(“ pospos被称为”)pynput.mouse.Controller()。position =(0,0) def stop(key):#print(key)试试:...
您创建了一个对.position
的调用的递归,当您在光标更改其位置时触发的回调中移动光标位置时。