- pygame.cursors
-
pygame модуль для ресурсов курсора
Pygame предоставляет управление системным курсором. Pygame поддерживает черно-белые курсоры (битовые курсоры), а также системные и цветные курсоры. Управление курсором осуществляется с помощью функций внутри
pygame.mouse.Этот модуль курсоров содержит функции для загрузки и декодирования различных форматов курсора. Это позволяет легко сохранять курсоры во внешних файлах или непосредственно в виде закодированных строк Python.
Модуль включает несколько стандартных курсоров. Функция
pygame.mouse.set_cursor()принимает несколько аргументов. Все эти аргументы хранятся в одном кортеже, вызываемом так:>>> pygame.mouse.set_cursor(*pygame.cursors.arrow)
Следующие переменные могут быть переданы в функцию %%%CODE_BLOCK_3%%:
pygame.cursors.arrowpygame.cursors.diamondpygame.cursors.broken_xpygame.cursors.tri_leftpygame.cursors.tri_right
Этот модуль также содержит несколько курсоров в формате строк. Вам нужно передать их в функцию
pygame.cursors.compile()перед использованием. Пример вызова:>>> cursor = pygame.cursors.compile(pygame.cursors.textmarker_strings) >>> pygame.mouse.set_cursor((8, 16), (0, 0), *cursor)
Следующие строки могут быть преобразованы в битовые карты курсора с помощью %%%CODE_BLOCK_11%%:
pygame.cursors.thickarrow_stringspygame.cursors.sizer_x_stringspygame.cursors.sizer_y_stringspygame.cursors.sizer_xy_stringspygame.cursor.textmarker_strings
- pygame.cursors.compile()
-
создание двоичных данных курсора из простых строкcompile(strings, black='X', white='.', xor='o') -> data, mask
Последовательность строк может быть использована для создания двоичных данных курсора для системного курсора. Возвращает двоичные данные в виде двух кортежей. Эти кортежи можно передать в качестве третьего и четвертого аргументов функции
pygame.mouse.set_cursor()соответственно.При создании собственных строк курсора можно использовать любое значение для представления черных и белых пикселей. Некоторые системы позволяют установить специальный цвет переключения для системного цвета, это также называется цветом xor. Если система не поддерживает курсоры xor, этот цвет будет просто черным.
Высота должна быть кратна 8. Ширина всех строк должна быть одинаковой и кратна 8. Если эти два условия не выполнены, поднимается исключение %%%CODE_BLOCK_18%%. Пример набора строк курсора:
thickarrow_strings = ( #sized 24x24 "XX ", "XXX ", "XXXX ", "XX.XX ", "XX..XX ", "XX...XX ", "XX....XX ", "XX.....XX ", "XX......XX ", "XX.......XX ", "XX........XX ", "XX........XXX ", "XX......XXXXX ", "XX.XXX..XX ", "XXXX XX..XX ", "XX XX..XX ", " XX..XX ", " XX..XX ", " XX..XX ", " XXXX ", " XX ", " ", " ", " ")
- pygame.cursors.load_xbm()
-
загрузка данных курсора из файла XBMload_xbm(cursorfile) -> cursor_argsload_xbm(cursorfile, maskfile) -> cursor_args
Загружает курсоры для простого подмножества файлов %%%CODE_BLOCK_20%%. Файлы
XBMтрадиционно используются для хранения курсоров в системах UNIX, представляют собой ASCII-формат, используемый для представления простых изображений.Иногда значения черного и белого цветов будут разделены в двух отдельных файлах %%%CODE_BLOCK_22%%. Можно передать второй аргумент maskfile, чтобы загрузить оба изображения в один курсор.
Аргументы cursorfile и maskfile могут быть либо именами файлов, либо объектами файлов с методом readlines.
Значение cursor_args может быть передано напрямую функции %%%CODE_BLOCK_23%%.
- pygame.cursors.Cursor
-
pygame объект, представляющий курсорCursor(size, hotspot, xormasks, andmasks) -> CursorCursor(hotspot, surface) -> CursorCursor(constant) -> CursorCursor(Cursor) -> CursorCursor() -> Cursor
В pygame 2 есть 3 типа курсоров, которые вы можете создать, чтобы добавить немного дополнительной полировки к вашей игре. Существуют курсоры типа битовая карта, которые существовали в pygame 1.x и скомпилированы из строки или загружаются из файла xbm. Затем есть курсоры типа система, где вы выбираете предустановленный курсор, который будет передавать то же значение, но будет выглядеть нативно в разных операционных системах. И, наконец, вы можете создать курсор цветной, отображая поверхность pygame как курсор.
Создание системного курсора
Выберите константу из этого списка, передайте её в
pygame.cursors.Cursor(constant), и вы готовы к работе. Имейте в виду, что не все системы поддерживают все системные курсоры, и вместо этого может быть выполнена подстановка. Например, в macOS WAIT/WAITARROW должен отображаться как стрелка, а SIZENWSE/SIZENESW/SIZEALL — как закрытая рука. А в Wayland каждый курсор SIZE должен отображаться как рука.Pygame Cursor Constant Description -------------------------------------------- pygame.SYSTEM_CURSOR_ARROW arrow pygame.SYSTEM_CURSOR_IBEAM i-beam pygame.SYSTEM_CURSOR_WAIT wait pygame.SYSTEM_CURSOR_CROSSHAIR crosshair pygame.SYSTEM_CURSOR_WAITARROW small wait cursor (or wait if not available) pygame.SYSTEM_CURSOR_SIZENWSE double arrow pointing northwest and southeast pygame.SYSTEM_CURSOR_SIZENESW double arrow pointing northeast and southwest pygame.SYSTEM_CURSOR_SIZEWE double arrow pointing west and east pygame.SYSTEM_CURSOR_SIZENS double arrow pointing north and south pygame.SYSTEM_CURSOR_SIZEALL four pointed arrow pointing north, south, east, and west pygame.SYSTEM_CURSOR_NO slashed circle or crossbones pygame.SYSTEM_CURSOR_HAND handСоздание курсора без передачи аргументов
В дополнение к доступным и описанным выше константам курсоров, вы также можете вызвать
pygame.cursors.Cursor(), и ваш курсор готов (это то же самое, что вызов %%%CODE_BLOCK_27%%). Вызов одного из этих методов фактически создает системный курсор, используя изображение по умолчанию.Создание цветного курсора
Чтобы создать цветной курсор, создайте
Cursorизhotspotиsurface.hotspot— это (x,y) координаты, определяющие, где на курсоре находится точная точка. Позиция точки захвата должна находиться в пределах %%%CODE_BLOCK_32%%.Создание битового курсора
Когда курсор мыши виден, он будет отображаться как черно-белая битовая карта с использованием заданных массивов битовой маски.
size— последовательность, содержащая ширину и высоту курсора.hotspot— последовательность, содержащая позицию точки захвата курсора.Курсор имеет ширину и высоту, но позиция мыши представлена набором координат точек. Значение, переданное в переменную курсора %%%CODE_BLOCK_35%%, помогает pygame определить, в какой точке находится курсор.
xormasks— последовательность байтов, содержащая битовые маски xor курсора. Наконецandmasks, последовательность байтов, содержащая битовые маски курсора. Для создания этих переменных можно воспользоваться функциейpygame.cursors.compile().Ширина и высота должны быть кратны 8, а массивы масок должны иметь правильный размер для заданной ширины и высоты. В противном случае будет возбуждено исключение.
- copy()
-
копировать текущий курсорcopy() -> Cursor
Возвращает новый объект Cursor с теми же данными и точкой захвата, что и оригинал.
- type
-
Получение типа курсораtype -> строка
Тип будет
"system","bitmap", или %%%CODE_BLOCK_41%%.
- data
-
Получение данных курсораdata -> кортеж
Возвращает данные, использованные для создания этого объекта курсора, упакованные в кортеж.
Новое в pygame 2.0.1.
Пример кода для создания и настройки курсоров. (Нажмите на мышь, чтобы переключить курсор)
# pygame setup import pygame as pg pg.init() screen = pg.display.set_mode([600, 400]) pg.display.set_caption("Example code for the cursors module") # create a system cursor system = pg.cursors.Cursor(pg.SYSTEM_CURSOR_NO) # create bitmap cursors bitmap_1 = pg.cursors.Cursor(*pg.cursors.arrow) bitmap_2 = pg.cursors.Cursor( (24, 24), (0, 0), *pg.cursors.compile(pg.cursors.thickarrow_strings) ) # create a color cursor surf = pg.Surface((40, 40)) # you could also load an image surf.fill((120, 50, 50)) # and use that as your surface color = pg.cursors.Cursor((20, 20), surf) cursors = [system, bitmap_1, bitmap_2, color] cursor_index = 0 pg.mouse.set_cursor(cursors[cursor_index]) clock = pg.time.Clock() going = True while going: clock.tick(60) screen.fill((0, 75, 30)) pg.display.flip() for event in pg.event.get(): if event.type == pg.QUIT or (event.type == pg.KEYDOWN and event.key == pg.K_ESCAPE): going = False # if the mouse is clicked it will switch to a new cursor if event.type == pg.MOUSEBUTTONDOWN: cursor_index += 1 cursor_index %= len(cursors) pg.mouse.set_cursor(cursors[cursor_index]) pg.quit()
Изменить на GitHub
© Pygame Developers.
Licensed under the GNU LGPL License version 2.1.
https://www.pygame.org/docs/ref/cursors.html