Очень простое решение - определить pygame.time.Clock()
для отслеживания времени между двумя последовательными MOUSEBUTTONDOWN
событиями.
Перед тем, как основной цикл определит:
dbclock = pygame.time.Clock()
ив контроллере цикла событий:
if event.type == pygame.MOUSEBUTTONDOWN:
if dbclock.tick() < DOUBLECLICKTIME:
print("double click detected!")
, где DOUBLECLICKTIME
- максимально допустимое время (в миллисекундах) между двумя щелчками, для которых считается двойным щелчком.Определите это до основного цикла.Например, чтобы разрешить максимальную задержку в полсекунды между двумя щелчками: DOUBLECLICKTIME = 500
.
В Pygame возможно создать столько pygame.time.Clock()
объектов, сколько необходимо.dbclock
должен использоваться только для этой цели (я имею в виду, никаких других вызовов dbclock.tick()
где-либо в главном цикле) или он будет мешать отслеживанию времени между двумя щелчками.
Для полноты позвольте мне также добавить ответ о колесе прокрутки, даже если другие ответы уже охватывали его.
Колесо прокрутки генерирует события MOUSEBUTTONDOWN
и MOUSEBUTTONUP
(оно считается кнопкой).Меня можно определить по параметру event.button
, который равен 4
, когда колесо катится, и 5
, когда колесо катится.