Секундомер между мышью вверх / вниз - PullRequest
2 голосов
/ 09 мая 2019

Я пытаюсь проверить время между событиями мыши и мыши, используя простой секундомер в цикле while. Событие мыши вниз работает нормально, но когда я отпускаю мышь для мыши вверх, секунды продолжают увеличиваться и не останавливаются.

from pygame import *
import time
screen = display.set_mode((160, 90))
sec = 0
while True:
    new_event = event.poll()
    if new_event.type == MOUSEBUTTONDOWN:
        while True: # Basic stopwatch started
            time.sleep(1)
            sec += 1
            print(sec)
            # In loop, when mouse button released,
            # supposed to end stopwatch
            if new_event.type == MOUSEBUTTONUP:
                break
    display.update()

Я хочу, чтобы секундомер заканчивался после отпускания мыши. например. Если щелкнуть мышью, секунды должны быть равны 1. Если мышь удерживать в течение 5 секунд, она не должна продолжаться после 5.

1 Ответ

1 голос
/ 09 мая 2019

Используйте pygame.time.get_ticks для получения количества миллисекунд с момента вызова pygame.init().
Сохраните миллисекунды при MOUSEBUTTONDOWN и рассчитайте разницу во времени в основном цикле:

from pygame import *

screen = display.set_mode((160, 90))

clock = time.Clock()
run = True
started = False
while run:

    for new_event in event.get():
        if new_event.type == QUIT:
            run = False

        if new_event.type == MOUSEBUTTONDOWN:
            start_time = time.get_ticks()
            started = True

        if new_event.type == MOUSEBUTTONUP:
            started = False

    if started:        
        current_time = time.get_ticks()
        sec = (current_time - start_time) / 1000.0
        print(sec)

    display.update()
...