web-dev-qa-db-fra.com

Comment distinguer le clic gauche, le clic droit de la souris en pygame?

De l'api de pygame, il a:

event type.MOUSEBUTTONDOWN, MOUSEBUTTONUP, MOUSEMOTION

Mais il n'y a aucun moyen de distinguer les clics droit et gauche?

11
ERJAN
if event.type == pygame.MOUSEBUTTONDOWN:
    print event.button

event.button peut égaler plusieurs valeurs entières:

1 - clic gauche

2 - clic du milieu

3 - clic droit

4 - faites défiler vers le haut

5 - faites défiler vers le bas


Au lieu d'un événement, vous pouvez également obtenir l'état actuel du bouton:

pygame.mouse.get_pressed()

Cela renvoie un tuple:

(clic gauche, clic milieu, clic droit)

Chacun est un entier booléen représentant le bouton haut/bas.

18
Neon Wizard

Vous voudrez peut-être y regarder de plus près tutoriel , ainsi que la réponse du n.st à this SO question .

Ainsi, le code qui vous montre comment faire la distinction entre le clic droit et le clic gauche se présente comme suit:

#!/usr/bin/env python
import pygame

LEFT = 1
RIGHT = 3

running = 1
screen = pygame.display.set_mode((320, 200))

while running:
    event = pygame.event.poll()
    if event.type == pygame.QUIT:
        running = 0
    Elif event.type == pygame.MOUSEBUTTONDOWN and event.button == LEFT:
        print "You pressed the left mouse button at (%d, %d)" % event.pos
    Elif event.type == pygame.MOUSEBUTTONUP and event.button == LEFT:
        print "You released the left mouse button at (%d, %d)" % event.pos
    Elif event.type == pygame.MOUSEBUTTONDOWN and event.button == RIGHT:
        print "You pressed the right mouse button at (%d, %d)" % event.pos
    Elif event.type == pygame.MOUSEBUTTONUP and event.button == RIGHT:
        print "You released the right mouse button at (%d, %d)" % event.pos

    screen.fill((0, 0, 0))
    pygame.display.flip()
5
vrs