pygame中的键鼠(key&mouse)模块

目录

key模块

功能

方法详解

pygame.key.get_focused()

pygame.key.get_pressed()

pygame.key.get_mods()

pygame.key.set_mods()

pygame.key.set_repeat()

pygame.key.get_repeat()

pygame.key.name()

pygame.key.key_code()

pygame.key.start_text_input()

pygame.key.stop_text_input()

pygame.key.set_text_input_rect()

mouse模块

功能

方法详解

pygame.mouse.get_pressed()

pygame.mouse.get_pos()

pygame.mouse.get_rel()

pygame.mouse.set_pos()

pygame.mouse.set_visible()

pygame.mouse.get_visible()

pygame.mouse.get_focused()

pygame.mouse.set_cursor()

pygame.mouse.get_cursor()


key模块

功能

此模块包含处理键盘的功能。

1.按下和释放键盘按钮时, pygame.event 队列获取 pygame.KEYDOWN 以及 pygame.KEYUP 事件。这两个事件都有 key 和 mod 属性。

  • key:一个表示键盘上(每个)键的整数ID
  • mod:事件发生时处于按下状态的所有修改键的一个位掩码

2. pygame.KEYDOWN 事件具有其他属性: unicode and scancode

  • unicode:完全翻译的输入字符的单个字符串,考虑了shift键和组合键
  • scancode:平台的特定键代码,不同键盘的键代码可能不同,但对于奇怪键的选择(如多媒体键)很有用

New in pygame 2.0.0:pygame.TEXTINPUT事件优先于 pygame.KEYDOWN的 unicode属性。属性text 包含输入。

3.以下是所有用于表示键盘键的常量列表(from pygame.locals):

pygame
Constant      ASCII   Description
---------------------------------
K_BACKSPACE   \b      backspace
K_TAB         \t      tab
K_CLEAR               clear
K_RETURN      \r      return
K_PAUSE               pause
K_ESCAPE      ^[      escape
K_SPACE               space
K_EXCLAIM     !       exclaim
K_QUOTEDBL    "       quotedbl
K_HASH        #       hash
K_DOLLAR      $       dollar
K_AMPERSAND   &       ampersand
K_QUOTE               quote
K_LEFTPAREN   (       left parenthesis
K_RIGHTPAREN  )       right parenthesis
K_ASTERISK    *       asterisk
K_PLUS        +       plus sign
K_COMMA       ,       comma
K_MINUS       -       minus sign
K_PERIOD      .       period
K_SLASH       /       forward slash
K_0           0       0
K_1           1       1
K_2           2       2
K_3           3       3
K_4           4       4
K_5           5       5
K_6           6       6
K_7           7       7
K_8           8       8
K_9           9       9
K_COLON       :       colon
K_SEMICOLON   ;       semicolon
K_LESS        <       less-than sign
K_EQUALS      =       equals sign
K_GREATER     >       greater-than sign
K_QUESTION    ?       question mark
K_AT          @       at
K_LEFTBRACKET [       left bracket
K_BACKSLASH   \       backslash
K_RIGHTBRACKET ]      right bracket
K_CARET       ^       caret
K_UNDERSCORE  _       underscore
K_BACKQUOTE   `       grave
K_a           a       a
K_b           b       b
K_c           c       c
K_d           d       d
K_e           e       e
K_f           f       f
K_g           g       g
K_h           h       h
K_i           i       i
K_j           j       j
K_k           k       k
K_l           l       l
K_m           m       m
K_n           n       n
K_o           o       o
K_p           p       p
K_q           q       q
K_r           r       r
K_s           s       s
K_t           t       t
K_u           u       u
K_v           v       v
K_w           w       w
K_x           x       x
K_y           y       y
K_z           z       z
K_DELETE              delete
K_KP0                 keypad 0
K_KP1                 keypad 1
K_KP2                 keypad 2
K_KP3                 keypad 3
K_KP4                 keypad 4
K_KP5                 keypad 5
K_KP6                 keypad 6
K_KP7                 keypad 7
K_KP8                 keypad 8
K_KP9                 keypad 9
K_KP_PERIOD   .       keypad period
K_KP_DIVIDE   /       keypad divide
K_KP_MULTIPLY *       keypad multiply
K_KP_MINUS    -       keypad minus
K_KP_PLUS     +       keypad plus
K_KP_ENTER    \r      keypad enter
K_KP_EQUALS   =       keypad equals
K_UP                  up arrow
K_DOWN                down arrow
K_RIGHT               right arrow
K_LEFT                left arrow
K_INSERT              insert
K_HOME                home
K_END                 end
K_PAGEUP              page up
K_PAGEDOWN            page down
K_F1                  F1
K_F2                  F2
K_F3                  F3
K_F4                  F4
K_F5                  F5
K_F6                  F6
K_F7                  F7
K_F8                  F8
K_F9                  F9
K_F10                 F10
K_F11                 F11
K_F12                 F12
K_F13                 F13
K_F14                 F14
K_F15                 F15
K_NUMLOCK             numlock
K_CAPSLOCK            capslock
K_SCROLLOCK           scrollock
K_RSHIFT              right shift
K_LSHIFT              left shift
K_RCTRL               right control
K_LCTRL               left control
K_RALT                right alt
K_LALT                left alt
K_RMETA               right meta
K_LMETA               left meta
K_LSUPER              left Windows key
K_RSUPER              right Windows key
K_MODE                mode shift
K_HELP                help
K_PRINT               print screen
K_SYSREQ              sysrq
K_BREAK               break
K_MENU                menu
K_POWER               power
K_EURO                Euro

4.还有一个将键盘按位或组合在一起的修改状态列表(from pygame.locals)。修改器信息包含在 pygame.KEYDOWN 和 pygame.KEYUP 事件的 mod 属性中。 mod 属性是事件发生时处于按下状态的所有修改键的位掩码。修饰符信息可以使用逐位和(AND)进行解码(除了 KMOD_NONE,应该使用equals ==进行比较)。

pygame
Constant      Description
-------------------------
KMOD_NONE     no modifier keys pressed
KMOD_LSHIFT   left shift
KMOD_RSHIFT   right shift
KMOD_SHIFT    left shift or right shift or both
KMOD_LCTRL    left control
KMOD_RCTRL    right control
KMOD_CTRL     left control or right control or both
KMOD_LALT     left alt
KMOD_RALT     right alt
KMOD_ALT      left alt or right alt or both
KMOD_LMETA    left meta
KMOD_RMETA    right meta
KMOD_META     left meta or right meta or both
KMOD_CAPS     caps lock
KMOD_NUM      num lock
KMOD_MODE     AltGr

方法详解

pygame.key.get_focused()

功能:如果显示接收到来自系统的键盘输入,则为真

属性:get_focused() -> bool

当显示窗口具有来自系统的键盘提示时,返回True。如果显示器需要确保不丢失键盘提示,则可以使用 pygame.event.set_grab()获取所有输入。

pygame.key.get_pressed()

功能:获取所有键盘按钮的状态

属性:get_pressed() -> bools

  1. 返回一系列布尔值,表示键盘上每个键的状态。使用键常量值索引数组。 True 值表示该按钮已按下。
  2. 使用此功能获取按钮列表不是处理用户文本输入的正确方法。无法知道按键的顺序,而且在两次调用 pygame.key.get_pressed()的过程中快速按键完全不会被注意到,也无法将这些按下的键转换为完全翻译的字符值。见 pygame.event 队列中 pygame.KEYDOWN 事件关于此功能的描述。

pygame.key.get_mods()

功能:确定要保留的修改键

属性:get_mods() -> int

返回一个整数表示所保存的所有修改键的位掩码。使用按位运算符可以测试是否按了特定的修改键。

pygame.key.set_mods()

功能:临时设置要按下的修改键

属性:set_mods(int) -> None

创建一个要施加到程序上的修饰键常量的位掩码。

pygame.key.set_repeat()

功能:控制重复按住的键

属性:

  • set_repeat() -> None
  • set_repeat(delay) -> None
  • set_repeat(delay, interval) -> None
  1. 启用键盘重复时,按住的键将生成多个 pygame.KEYDOWN事件。 delay参数是第一次重复发送 pygame.KEYDOWN 事件之前的毫秒数。在那之后,另一个 pygame.KEYDOWN 事件将每隔 interval 毫秒发送一次。如果提供了delay值,而未提供 interval值或值为0,则将设置 intervaldelay的值相同。
  2. 若要禁用键重复,请在没有参数或delay设置为0的情况下调用此函数。
  3. 当pygame初始化时,键重复被禁用。

提示:ValueError -- if delay or interval is < 0

Changed in pygame 2.0.0:如果 delayinterval 小于0,引发一个 ValueError(而不是pygame.error)。

pygame.key.get_repeat()

功能:查看重复按住的键

属性:get_repeat() -> (delay, interval)

获取重复键盘的 delayinterval值。参考 pygame.key.set_repeat()对这些值的说明。

New in pygame 1.8.

pygame.key.name()

功能:获取键盘标识符的名称

属性:name(key) -> string

从键盘按钮id常量中获取按钮的描述性名称。

pygame.key.key_code()

功能:从键盘名中获取键盘标识符

属性:key_code(name=string) -> int

从键的描述性名称获取键标识符代码。这将返回一个与K_* keycodes匹配的整数。例如:

>>> pygame.key.key_code("return") == pygame.K_RETURN
True
>>> pygame.key.key_code("0") == pygame.K_0
True
>>> pygame.key.key_code("space") == pygame.K_SPACE
True

提示:

  • ValueError -- if the key name is not known.
  • NotImplementedError -- if used with SDL 1.

New in pygame 2.0.0.

pygame.key.start_text_input()

功能:开始处理输入法组合

属性:start_text_input() -> None

  1. 开始接收pygame.TEXTEDITING 和 pygame.TEXTINPUT事件处理输入法(IME)。
  2. 在启动或更改IME组合时接收一个 pygame.TEXTEDITING事件。它包含合成textlength和编辑合成中的 start 位置。当提交合成(或接收到非输入法输入)时一个pygame.TEXTINPUT事件已生成。
  3. 普通pygame.TEXTINPUT事件不依赖于此方法。

New in pygame 2.0.0.

pygame.key.stop_text_input()

功能:停止处理输入法组合

属性:stop_text_input() -> None

  1. 停止接收pygame.TEXTEDITING 和 pygame.TEXTINPUT事件处理IME的。
  2. 普通 pygame.TEXTINPUT事件不依赖于此方法。

New in pygame 2.0.0.

pygame.key.set_text_input_rect()

功能:控制候选列表的位置

属性:set_text_input_rect(Rect) -> None

  1. 这将设置用于输入法键入的矩形。如果支持,它将控制候选列表的打开位置。
  2. 普通 pygame.TEXTINPUT事件不依赖于此方法。

New in pygame 2.0.0.

 

mouse模块

功能

此模块可用于获取鼠标设备的当前状态,还可以改变鼠标的系统光标。

  1. 设置显示模式后,事件队列将开始接收鼠标事件。当鼠标按钮按下和释放时生成 pygame.MOUSEBUTTONDOWNpygame.MOUSEBUTTONUP的事件。这些事件包含一个button属性,表示按下了哪个按钮。鼠标滚轮滚动时将生成 pygame.MOUSEBUTTONDOWNpygame.MOUSEBUTTONUP 事件。当车轮向上滚动时,按钮将设置为4;当车轮向下滚动时,按钮将设置为5。每当鼠标移动时,它会生成一个pygame.MOUSEMOTION事件。鼠标的移动被分解成小而精确的运动事件。当鼠标移动时,许多运动事件将被放置在队列中。未从事件队列中正确清除鼠标运动事件是事件队列填满的主要原因。
  2. 如果鼠标光标被隐藏,并且输入被捕捉到当前显示,则鼠标将进入虚拟输入模式,在该模式下,鼠标的相对移动永远不会被屏幕的边框阻止。查看函数pygame.mouse.set_visible() 和 pygame.event.set_grab() 获取配置。

pygame2中的鼠标滚轮行为

  • SDL2的SDL_MOUSEWHEEL事件具有鼠标滚轮行为的适当功能。SDL_MOUSEWHEEL取代了将鼠标滚动视为类似于按钮的类型的旧方法。新事件支持水平和垂直滚动移动(带符号的整数值表示滚动量)以及“翻转”方向(每个轴设置正值和负值表示被翻转)。阅读有关SDL2输入相关更改的详细信息:https://wiki.libsdl.org/MigrationGuide#Input
  • 在pygame2中,鼠标滚轮功能可以通过监听pygame.events.MOUSEWHEEL事件类型。当触发此事件时,开发人员可以使用pygame.event.get()获取Event对象。该对象可用于访问有关鼠标滚动条的数据。

示例如下:

# Taken from husano896's PR thread:
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_var in pygame.event.get():
            if event_var.type == QUIT:
               pygame.quit()
               return
            elif event_var.type == MOUSEWHEEL:
               print(event_var) # can access properties with prop notation
                                # (ex: event_var.y)
      clock.tick(60)

# Execute game:
main()

 

方法详解

pygame.mouse.get_pressed()

功能:获取鼠标按钮的状态

属性:get_pressed() -> (button1, button2, button3)

  1. 返回一个表示所有鼠标按钮状态的布尔值序列。如果值为真,则表示调用当前鼠标正在按下。
  2. 要获得所有鼠标事件,最好使用pygame.event.wait() 或 pygame.event.get()检查这些事件是否是MOUSEBUTTONDOWNMOUSEBUTTONUP或 MOUSEMOTION
  3. 在X11上,一些X服务器会使用中间按钮模拟。当同时单击按钮1和3时,可以发出2按钮事件。
  4. 记得在此函数之前调用函数pygame.event.get()。否则将无法正常运行。

pygame.mouse.get_pos()

功能:获取鼠标光标位置

属性:get_pos() -> (x, y)

返回鼠标光标的 X 和 Y位置。该位置是相对于显示器的左上角。光标位置可以位于显示窗口之外,但始终限制在屏幕上。

pygame.mouse.get_rel()

功能:获取鼠标移动量

属性:get_rel() -> (x, y)

返回自上次调用此函数以来在 XY中的移动量。鼠标光标的相对移动受屏幕边缘的限制,但请参见虚拟输入鼠标模式以了解解决此问题的方法。

pygame.mouse.set_pos()

功能:设置鼠标光标位置

属性:set_pos([x, y]) -> None

将当前鼠标位置设置为给定的参数。如果鼠标光标可见,它将跳转到新的坐标。移动鼠标将生成新的pygame.MOUSEMOTION事件。

pygame.mouse.set_visible()

功能:隐藏或显示鼠标光标

属性:set_visible(bool) -> bool

如果bool参数为true,则鼠标光标将可见。这将返回光标以前的可见状态(true/false)。

pygame.mouse.get_visible()

功能:获取鼠标光标的当前可见性状态。

get_visible() -> bool

如果鼠标光标当前可见,则返回True;如果鼠标光标不可见,则返回False。

New in pygame 2.0.0.

pygame.mouse.get_focused()

功能:检查显示器是否接收到鼠标输入

属性:get_focused() -> bool

  1. 当pygame接收到鼠标输入事件时返回true。
  2. 在窗口(window)模式时,此方法最有用。相反,在全屏(full-screen)模式下,此方法始终返回true。
  3. MS Windows下,具有鼠标焦点的窗口也具有键盘焦点。但在X-Windows下,一个窗口可以接收鼠标事件,另一个窗口可以接收键盘事件。 pygame.mouse.get_focused()指示pygame窗口是否接收鼠标事件。.

pygame.mouse.set_cursor()

功能:设置系统鼠标光标的图像

属性:set_cursor(size, hotspot, xormasks, andmasks) -> None

  1. 当鼠标光标可见时,它将使用给定的位掩码数组显示为黑白位图。size是一个包含光标宽度和高度的序列。hotspot是包含光标热点位置的序列。xormasks是包含游标xor数据掩码的字节序列。andmasks是一个包含光标位掩码数据的字节序列。
  2. 宽度必须是8的倍数,并且掩码数组必须是给定宽度和高度的正确大小。否则会引发异常。
  3. pygame.cursor文件用于帮助为系统光标创建默认和自定义掩码的模块。

pygame.mouse.get_cursor()

功能:获取系统鼠标光标的图像

属性:get_cursor() -> (size, hotspot, xormasks, andmasks)

  1. 获取有关鼠标系统光标的信息。返回值与传入的参数与pygame.mouse.set_cursor()相同。
  2. 此方法对于SDL2不可用,因为SDL2不提供实现此方法的底层代码。

 

 

 

整理自:

  • 9
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值