web-dev-qa-db-ja.com

pygameで左クリック、右クリックのマウスクリックを区別するにはどうすればよいですか?

Pygameのapiから、それは:

event type.MOUSEBUTTONDOWN, MOUSEBUTTONUP, MOUSEMOTION

しかし、右クリックと左クリックを区別する方法はありませんか?

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

event.buttonは、いくつかの整数値と同じにすることができます。

1-左クリック

2-中クリック

3-右クリック

4-上にスクロール

5-下にスクロール


イベントの代わりに、現在のボタンの状態も取得できます。

pygame.mouse.get_pressed()

これはタプルを返します:

(左クリック、ミドルクリック、右クリック)

それぞれがボタンのアップ/ダウンを表すブール整数です。

18
Neon Wizard

この tutorial と、n.stの this SO question への回答をよく見てください。

したがって、右クリックと左クリックを区別する方法を示すコードは次のようになります。

#!/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