Pygame Mouse

https://www.pygame.org/docs/ref/mouse.html

WPROWADZENIE

Moduł mouse służy do obsługi myszy.

Przyciski myszy po naciśnięciu i zwolnieniu generują odpowiednio zdarzenia pygame.MOUSEBUTTONDOWN i pygame.MOUSEBUTTONUP. Oba zdarzenia mają atrybut button, reprezentujący odpowiedni przycisk. Liczby int 1 (lewy przycisk), 2 (środkowy przycisk), 3 (prawy przycisk) odpowiadają trzem przyciskom, 4 odpowiada kręceniu kółka w górę, 5 odpowiada kręceniu kółka w dół. Oba zdarzenia mają także atrybut pos zawierający krotkę (x, y).

Przesuwanie myszy generuje zdarzenia pygame.MOUSEMOTION. Ruch myszy jest podzielony ma małe i precyzyjne zdarzenia ruchu, które są wstawiane do kolejki zdarzeń. Atrybuty zdarzenia to pos (krotka (x, y)), rel (względne przesunięcie od ostatniego zdarzenia ruchu), buttons (3-tuple bool ze stanem klawiszy podczas przesuwania).

Jeżeli kolejka zdarzeń nie jest prawidłowo czyszczona, to zdarzenia ruchu mogą ją przepełnić, a wtedy nowe zdarzenia są ignorowane bez ostrzeżenia.

W pygame 2 pojawiły się zdarzenia pygame.MOUSEWHEEL do właściwej obsługi kółka myszy (atrybuty: x, y, flipped, which).

PRZYKŁAD


# mouse1.py
# SPOSÓB I - badanie stanu urządzenia (pygame.mouse).
# MAIN GAME LOOP
while True:
    # HANDLE EVENTS
    for event in pygame.event.get():
        if event.type == pygame.QUIT:   # QUIT Event, pygame.locals.QUIT
            pygame.quit()   # deactivates the Pygame library
            sys.exit(0)

    # CHECKING INPUTS
    button_seq = pygame.mouse.get_pressed()
    # return (button1, button2, button3), sekwencja wartości bool,
    # która reprezentuje stan wszystkich przycisków myszy (True to naciśnięty)
    print("button_seq {}".format(button_seq))
    if any(button_seq):
        position = pygame.mouse.get_pos()   # return (x, y),
        # pozycja kursora względem lewego górnego rogu display

# mouse2.py
# SPOSÓB II - badanie zdarzeń (pygame.event).
# MAIN GAME LOOP
while True:
    # HANDLE EVENTS
    for event in pygame.event.get():
        if event.type == pygame.QUIT:   # QUIT Event, pygame.locals.QUIT
            pygame.quit()   # deactivates the Pygame library
            sys.exit(0)
        elif event.type == pygame.MOUSEBUTTONDOWN:
            print("event down dict {}".format(event.__dict__))   # atrybuty button, pos

            button_number = event.button   # liczba 1-5
            position = event.pos   # (x, y)
            # pozycja kursora względem lewego górnego rogu display

        elif event.type == pygame.MOUSEBUTTONUP:
            print("event up dict {}".format(event.__dict__))   # atrybuty button, pos

        elif event.type == pygame.MOUSEMOTION:
            print("event motion dict {}".format(event.__dict__))   # atrybuty pos, rel, buttons