#python
#python
Вопрос:
Я пишу простую программу на python, которая включает в себя перемещение моей мыши (я делаю его с помощью PyUserInput). Однако: разрешено перемещать мышь только целочисленными шагами (скажем, пикселями). Так mouse.move(250.3,300.2)
не будет работать.
Я вызываю функцию перемещения примерно 30 раз в секунду и перемещаю мышь на несколько пикселей. Скорость, с которой я перемещаю мышь, варьируется от 0,5 до 2,5 пикселей / вызов. Округление дает мне 1-3 (перемещать нужно только целые числа), что на самом деле не отражает скорость.
Я ищу решение (может быть, генератор?) который принимает мою текущую скорость (например, 0,7 пикселей) и возвращает мне шаблон (например, сигнал PWM) из 0 и 1 (например 1,1,0,1,1,0...
), что дает в среднем 0,7 пикселей. Однако этот генератор должен быть адаптивным, поскольку скорость постоянно меняется.
Я новичок в python и придерживаюсь последнего пункта: изменчивости функции генератора.
Вот что у меня есть до сих пор:
# for 0.75px/call
def getPWM(n):
nums = [1,0,1,1]
yield nums[n%4]
Ответ №1:
Что вам нужно сделать, это отслеживать предыдущую позицию и желаемую текущую позицию и выдавать округленные координаты. Вы могли бы отслеживать предыдущую позицию в функции, но это гораздо проще сделать в классе.
class pwm:
def __init__(self):
self.desired_position = 0.0
self.actual_position = 0
def nextPWM(self, speed):
self.desired_position = speed
movement = round(self.desired_position - self.actual_position)
self.actual_position = movement
return movement
Комментарии:
1. после некоторых настроек он работает как шарм. Спасибо!