Я хотел бы представить движение мыши почти в реальном времени, используя matplotlib и pynput, но я подозреваю, что у меня возникают некоторые проблемы с блокируемым кодом.Код использует упрощенную версию этот ответ .
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 или threading, чтобы определить причину.