如何管理两个线程,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()
从鼠标侦听器中获取 x
和 y
,但是我怎样才能将这两个线程联合起来?
上下文管理器方法(即 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.
访问 x
和 y
值的最简单方法是将其包装在 class 中并更新处理程序中的实例属性;或者定义两个全局变量(x
和 y
)。
我有一个鼠标侦听器:
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()
从鼠标侦听器中获取 x
和 y
,但是我怎样才能将这两个线程联合起来?
上下文管理器方法(即 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.
访问 x
和 y
值的最简单方法是将其包装在 class 中并更新处理程序中的实例属性;或者定义两个全局变量(x
和 y
)。