如何管理两个线程,Pynput鼠标侦听器和while循环?

时间:2019-08-22 23:51:24

标签: python python-3.x multithreading pynput

我有一个鼠标侦听器:

from pynput.mouse import Listener, Button

def on_click(x, y, button):
    if button == Button.left:
    xy_dict["x"] = x
    xy_dict["y"] = y
    if button == Button.right:
        raise MyException(button)

with Listener(on_click=on_click) as listener:
    listener.join()

我还有其他脚本中的main()功能。假设main()从鼠标侦听器中获取了xy,但是我如何才能将这两个线程结合起来?

1 个答案:

答案 0 :(得分:0)

上下文管理器方法(即with)仅在您希望能够停止侦听器时才有用。如果不需要,只需启动侦听器:

listener = Listener(on_click=on_click)
listener.start()

它将自动作为新线程启动:

https://pythonhosted.org/pynput/mouse.html#monitoring-the-mouse

  

鼠标监听器是threading.Thread,所有回调都将从线程中调用。

访问xy值的最简单方法是将其包装在一个类中并更新处理程序中的实例属性。或定义两个全局变量(xy)。