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
# MAIN GAME LOOP
while True:
    # HANDLE EVENTS
    for event in pygame.event.get():
        if event.type == pygame.MOUSEBUTTONDOWN:
            # SPOSÓB I - badanie zdarzeń (pygame.event).
            print("event down dict {}".format(event.__dict__))   # atrybuty button, pos

            button_number = event.button   # liczba 1-5
            button_position = event.pos   # (x, y)

            # SPOSÓB II - badanie stanu urządzenia (pygame.mouse).
            position = pygame.mouse.get_pos()   # return (x, y),
            # pozycja kursora względem lewego górnego rogu display

            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)

        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