绘制鼠标移动Python

时间:2018-05-24 09:20:04

标签: python matplotlib pynput

我想使用matplotlib和pynput近乎实时地绘制鼠标的移动,但我怀疑我遇到了被阻止的代码的一些问题。代码使用简化版this answer

import matplotlib.pyplot as plt
from pynput import mouse
from time import sleep

fig, ax = plt.subplots()

ax.set_xlim(0, 1920-1)
ax.set_ylim(0, 1080-1)
plt.show(False)
plt.draw()

x,y = [0,0]
points = ax.plot(x, y, 'o')[0]
# cache the background
background = fig.canvas.copy_from_bbox(ax.bbox)

def on_move(x, y):
    points.set_data(x,y)
    # restore background
    fig.canvas.restore_region(background)
    # redraw just the points
    ax.draw_artist(points)
    # fill in the axes rectangle
    fig.canvas.blit(ax.bbox)

with mouse.Listener(on_move=on_move) as listener:
    sleep(10)

代码似乎停在ax.draw_artist(points)上。 pynput鼠标侦听器是threading.Thread,并且从线程调用所有回调。我对matplotlib或线程的内部工作方式不太熟悉,无法确定原因。

1 个答案:

答案 0 :(得分:6)

与matplotlib GUI并行运行带有GUI输入的线程可能会导致问题 无论如何,仅使用matplotlib工具更有意义。有event handling mechanism可用,它提供constructor( ... public config: Config, ) { // all platforms this.config.set( 'scrollPadding', false ) this.config.set( 'scrollAssist', false ) this.config.set( 'autoFocusAssist', false ) // android this.config.set( 'android', 'scrollAssist', true ) this.config.set( 'android', 'autoFocusAssist', 'delay' ) ... 来获取当前鼠标位置。为此事件注册的回调将存储鼠标位置并blit更新的点。

"motion_notify_event"