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

21 Авг 2019 в 06:31
236 +1
0
Ответы
1

Для упрощения подсчета времени движения курсора можно использовать переменную, которая будет хранить общее время движения. Когда курсор двигается, мы будем увеличивать эту переменную на время движения.

Например, вот как можно модифицировать ваш код, чтобы отображать общее время движения курсора:

if __name__ == '__main__':
app = QApplication(sys.argv)
last_frame = get_current_frame()
total_movement_time = 0
while True:
nowTime = datetime.now()
new_frame = get_current_frame()
if new_frame.speed(last_frame) != 0:
time_delta = abs(new_frame.time - last_frame.time)
total_movement_time += time_delta
print('Total movement time: {:.2f} seconds'.format(total_movement_time))
last_frame = new_frame
time.sleep(0.07)

В этом примере мы создали переменную total_movement_time, которая увеличивается на время движения каждый раз, когда курсор двигается. Теперь в консоли будет отображаться общее время движения курсора с момента запуска кода.

Если вам нужно сохранить это время для последующего использования, вы можете сохранить его в файл или базу данных вместо его вывода в консоль.

20 Апр в 13:17
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 251 автору
Первые отклики появятся уже в течение 10 минут
Прямой эфир