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

How to manage two threads, pynput mouse listener and while loop?

我有一个鼠标侦听器:

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,但是我怎样才能将这两个线程联合起来?

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

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

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

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

A mouse listener is a threading.Thread, and all callbacks will be invoked from the thread.

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