Mouse Listener on_move event

问题描述 投票:0回答:1
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)试试:...

python python-3.x listener pynput
1个回答
0
投票

您创建了一个对.position的调用的递归,当您在光标更改其位置时触发的回调中移动光标位置时。

© www.soinside.com 2019 - 2024. All rights reserved.