Есть такой вот кусок кода, который выводит скорость движения курсора и время, когда курсор двинулся. Задача посчитать совокупное время движения курсора с момента запуска кода
import sys
import math
import time
from datetime import datetime
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from toolz.itertoolz import second
# scriptStartAt = datetime.strftime(datetime.now(), "%Y.%m.%d %H:%M:%S")
# print('Script start at : ', scriptStartAt)
#time.sleep(3)
class Frame:
def __init__(self, position, time):
self.position = position
self.time = time
def speed(self, frame):
d = distance(*self.position, *frame.position)
time_delta = abs(frame.time - self.time)
return d / time_delta
def distance(x1, y1, x2, y2):
return math.sqrt((x2 - x1)**2 + (y2-y1)**2)
def get_current_cursor_position():
pos = QCursor.pos()
return pos.x(), pos.y()
def get_current_frame():
return Frame(get_current_cursor_position(), time.time())
#спрашиваем время каждую минуту
# def check_last_time():
# nowTime = datetime.now()
# print('Script still runing :', nowTime)
# time.sleep(60)
if __name__ == '__main__':
app = QApplication(sys.argv)
last_frame = get_current_frame()
while True:
#объясвляем время
nowTime = datetime.now()
mouseWasMoveAt = nowTime.strftime('%H:%M:%S')
new_frame = get_current_frame()
if new_frame.speed(last_frame) != 0:
print(mouseWasMoveAt)
last_frame = new_frame
time.sleep(0.07)
на выхлопе имеем такие значения:
24.923661403031307 12:29:06
387.6390624573542 12:29:07
394.4926824122518 12:29:07
364.6319448618099 12:29:07
265.4365222073813 12:29:07
130.94569163049468 12:29:07
2.2565370492799803 12:29:09
2755.4110208927873 12:29:09
4424.753655893077 12:29:09
1333.456662360851 12:29:09
378.76671822675877 12:29:09
Я думал о том, что бы удалить все строки, где время одинаковое, тогда каждая строка будет ровняться 1-й секунде и просто сосчитать количество строк. Но не особо хочется описывать это удаление строк, потом суммирование, долго это будет. Есть способ сделать это проще? Я думаю может таймер какой-то? что бы при движении он начинал отсчет и при остановке курсора - останавливался. Но если это все будет выводиться в консоль, то будет много увеличивающихся секунд и считать будет еще сложнее.