Spec-Zone.ru › Pygame
pygame.mouse
Модуль pygame для работы с мышкой

Функции мыши могут использоваться для получения текущего состояния устройства мыши. Эти функции также могут изменять системный курсор для мыши.

Когда режим отображения установлен, очередь событий начнёт получать события мыши. Кнопки мыши генерируют события pygame.MOUSEBUTTONDOWN и pygame.MOUSEBUTTONUP при нажатии и отпускании. Эти события содержат атрибут кнопки, представляющий нажатую кнопку.

Колесо мыши будет генерировать события pygame.MOUSEBUTTONDOWN и pygame.MOUSEBUTTONUP при прокрутке. Кнопка будет установлена в 4 при прокрутке вверх и в кнопку 5 при прокрутке вниз. Всякий раз, когда мышь перемещается, генерируется событие pygame.MOUSEMOTION. Перемещение мыши разбивается на небольшие и точные события движения. При движении мыши в очереди будет размещено много событий движения. События движения мыши, которые не удалены должным образом из очереди событий, являются основной причиной заполнения очереди событий.

Если курсор мыши скрыт, и ввод захвачен для текущего экрана, мышь перейдёт в режим виртуального ввода, где относительные перемещения мыши никогда не будут останавливаться границами экрана. Для настройки этого см. функции pygame.mouse.set_visible() и pygame.event.set_grab().

Поведение колеса мыши в pygame 2

Существует правильная функциональность для поведения колеса мыши с pygame 2, поддерживающим события pygame.MOUSEWHEEL. Новые события поддерживают горизонтальные и вертикальные прокрутки со значениями целых чисел, представляющими количество прокрутки (x и y), а также направление flipped (установленные положительные и отрицательные значения для каждой оси перевернуты). Подробнее об изменениях, связанных с вводом SDL2, см. здесь https://wiki.libsdl.org/MigrationGuide#input

В pygame 2 функциональность колеса мыши можно использовать, прослушивая события типа pygame.MOUSEWHEEL (имейте в виду, что они всё ещё генерируют события pygame.MOUSEBUTTONDOWN как и в pygame 1.x). При срабатывании этого события разработчик может получить доступ к соответствующему объекту Event с помощью pygame.event.get(). Объект может использоваться для доступа к данным о прокрутке мыши, таким как which (он покажет, какое именно устройство мыши вызвало событие).

Пример кода прокрутки мыши (проверено на 2.0.0.dev7)
# Taken from husano896's PR thread (slightly modified)
import pygame
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((640, 480))
clock = pygame.time.Clock()

def main():
   while True:
      for event in pygame.event.get():
            if event.type == QUIT:
               pygame.quit()
               return
            elif event.type == MOUSEWHEEL:
               print(event)
               print(event.x, event.y)
               print(event.flipped)
               print(event.which)
               # can access properties with
               # proper notation(ex: event.y)
      clock.tick(60)

# Execute game:
main()
pygame.mouse.get_pressed()
получить состояние кнопок мыши
get_pressed(num_buttons=3) -> (button1, button2, button3)
get_pressed(num_buttons=5) -> (button1, button2, button3, button4, button5)

Возвращает последовательность булевых значений, представляющих состояние всех кнопок мыши. Истинное значение означает, что кнопка мыши в данный момент нажата.

Для получения всех событий мыши лучше использовать либо pygame.event.wait() или pygame.event.get() и проверять все эти события, чтобы узнать, являются ли они MOUSEBUTTONDOWN, MOUSEBUTTONUP, или MOUSEMOTION.

Обратите внимание, что в X11 некоторые X-серверы используют эмуляцию средней кнопки. Когда вы нажимаете обе кнопки 1 и 3 одновременно, может быть отправлено событие кнопки 2.

Обратите внимание, что необходимо вызвать pygame.event.get() перед этой функцией. В противном случае она не будет работать должным образом.

Для поддержки мышей с пятью кнопками в pygame 2 был добавлен необязательный параметр num_buttons. Когда он установлен в 5, button4 и button5 добавляются в возвращаемую кортеж. Только 3 и 5 являются допустимыми значениями для этого параметра.

Изменено в pygame 2.0.0: Добавлен аргумент num_buttons

pygame.mouse.get_pos()
получить позицию курсора мыши
get_pos() -> (x, y)

Возвращает x и y положение курсора мыши. Позиция относительна к верхнему левому углу экрана. Позиция курсора может находиться вне окна отображения, но всегда ограничена экраном.

pygame.mouse.get_rel()
получить величину перемещения мыши
get_rel() -> (x, y)

Возвращает величину перемещения по x и y с момента предыдущего вызова этой функции. Относительное перемещение курсора мыши ограничено краями экрана, но см. режим виртуального ввода мыши для обхода этого ограничения. Режим виртуального ввода мыши описан в начале страницы.

pygame.mouse.set_pos()
установить позицию курсора мыши
set_pos([x, y]) -> None

Устанавливает текущую позицию мыши на заданные значения. Если курсор мыши виден, он переместится в новые координаты. Перемещение мыши сгенерирует новое событие pygame.MOUSEMOTION.

pygame.mouse.set_visible()
скрыть или показать курсор мыши
set_visible(bool) -> bool

Если аргумент bool равен true, курсор мыши будет виден. Будет возвращено предыдущее состояние видимости курсора.

pygame.mouse.get_visible()
получить текущее состояние видимости курсора мыши
get_visible() -> bool

Получить текущее состояние видимости курсора мыши. True если мышь видна, False в противном случае.

Новое в pygame 2.0.0.

pygame.mouse.get_focused()
проверить, получает ли экран входные данные мыши
get_focused() -> bool

Возвращает true, когда pygame получает события мыши (или, в терминологии оконных систем, является "активным" или имеет "фокус").

Этот метод наиболее полезен при работе в окне. В отличие от этого, в полноэкранном режиме этот метод всегда возвращает true.

Примечание: в MS Windows окно, имеющее фокус мыши, также имеет фокус клавиатуры. Однако в X-Windows одно окно может получать события мыши, а другое - события клавиатуры. pygame.mouse.get_focused() указывает, получает ли окно pygame события мыши.

pygame.mouse.set_cursor()
установить курсор мыши на новый курсор
set_cursor(pygame.cursors.Cursor) -> None
set_cursor(size, hotspot, xormasks, andmasks) -> None
set_cursor(hotspot, surface) -> None
set_cursor(constant) -> None

Установить курсор мыши на новый. Эта функция принимает либо явный объект Cursor или аргументы для создания объекта Cursor.

См. pygame.cursors.Cursor для получения справки по созданию курсоров и примеров.

Изменено в pygame 2.0.1.

pygame.mouse.get_cursor()
получить текущий курсор мыши
get_cursor() -> pygame.cursors.Cursor

Получить информацию о системном курсоре мыши. Возвращаемое значение содержит те же данные, что и аргументы, переданные в pygame.mouse.set_cursor().

Примечание

Код, который распаковывал вызов get_cursor() в size, hotspot, xormasks, andmasks , по-прежнему будет работать, если вызов возвращает курсор старого типа.

Изменено в pygame 2.0.1.




Изменить на GitHub

© Pygame Developers.
Licensed under the GNU LGPL License version 2.1.
https://www.pygame.org/docs/ref/mouse.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API