我一直在使用pygame跟踪鼠标的移动,我想知道是否有一种方法可以某种方式记录它们,以便我可以回放鼠标的位置。我正在尝试开发一种机器学习程序。这是我到目前为止的内容:
import pygame
import RPi.GPIO as GPIO
import time
servoPIN = 17
servoPIN2 = 27
GPIO.setmode(GPIO.BCM)
GPIO.setup(servoPIN, GPIO.OUT)
GPIO.setup(servoPIN2, GPIO.OUT)
p = GPIO.PWM(servoPIN, 50) # GPIO 17 for PWM with 50Hz
r = GPIO.PWM(servoPIN2, 50)
p.start(5.5)
r.start(5.5)
running = True
screen = pygame.display.set_mode((1200, 1200))
while running:
event = pygame.event.poll()
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.MOUSEMOTION:
(x,y) = event.pos
print (x,y)
d = float(x/100)
f = float(y/100)
p.ChangeDutyCycle(d)
r.ChangeDutyCycle(f)
您可以将(x,y)位置存储在文件中。说。 mouseMovements.txt
此文件可由库pyautogui
读取,然后可以播放鼠标。
import pyautogui
ifp = open("mouseMovements.txt", "r")
for line in ifp:
x, y = line.strip().split(",")
pyautogui.moveTo(x, y)
如果您需要更多帮助,请参阅详细文档。 https://pyautogui.readthedocs.io/en/latest/
为什么没有鼠标位置列表。然后,您可以遍历它们。
而不是在移动鼠标时获取鼠标位置,而是可以在每一帧都获取它,因此,如果您在录制中等待,它将不会一直移动,而是会等待。
Mouse_recording = []
while running:
MouseX, MouseY = pygame.mouse.get_pos()
Mouse_recording.append((MouseX,MouseY))
#do other stuff
这可能太快,给您太多点,所以您可以用pygame.time.Clock()
设置fps>
Clock = pygame.time.Clock()
while running:
Clock.tick(60) # stops the program from running more than 60 fps
使用列表。您想存储用作输入ChangeDutyCycle
的位置: